PHPackages                             haddowg/canvas - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. haddowg/canvas

ActiveWordpress-theme

haddowg/canvas
==============

Canvas is a WordPress starter theme based on HTML5 Boilerplate &amp; Bootstrap that will help you make better themes.

016PHP

Since Mar 8Pushed 11y ago1 watchersCompare

[ Source](https://github.com/haddowg/canvas)[ Packagist](https://packagist.org/packages/haddowg/canvas)[ RSS](/packages/haddowg-canvas/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependenciesVersions (1)Used By (0)

Canvas
======

[](#canvas)

Canvas is a WordPress starter theme based on [HTML5 Boilerplate](http://html5boilerplate.com/) &amp; [Bootstrap](http://getbootstrap.com/) that will help you make better themes.

Features
--------

[](#features)

- [Grunt](http://gruntjs.com/) for compiling LESS to CSS, checking for JS errors, live reloading, concatenating and minifying files, versioning assets, and generating lean Modernizr builds
- [Bower](http://bower.io/) for front-end package management
- [HTML5 Boilerplate](http://html5boilerplate.com/)
- The latest [jQuery](http://jquery.com/) via Google CDN, with a local fallback
- The latest [Modernizr](http://modernizr.com/) build for feature detection, with lean builds with Grunt
- An optimized Google Analytics snippet
- [Bootstrap](http://getbootstrap.com/)
- Organized file and template structure
- ARIA roles and microformats
- Theme activation
- [Theme wrapper](http://canvas.io/an-introduction-to-the-canvas-theme-wrapper/)
- Cleaner HTML output of navigation menus
- Posts use the [hNews](http://microformats.org/wiki/hnews) microformat

### Additional features

[](#additional-features)

Install the [Soil](https://github.com/canvas/soil) plugin to enable additional features:

- Root relative URLs
- Nice search (`/search/query/`)
- Cleaner output of `wp_head` and enqueued assets markup

Installation
------------

[](#installation)

Clone the git repo - `git clone git://github.com/haddowg/canvas.git` - or [download it](https://github.com/haddowg/canvas/zipball/master) and then rename the directory to the name of your theme or website.

Configuration
-------------

[](#configuration)

Edit `lib/config.php` to enable or disable theme features and to define a Google Analytics ID.

Edit `lib/init.php` to setup navigation menus, post thumbnail sizes, post formats, and sidebars.

Theme development
-----------------

[](#theme-development)

Canvas uses [Grunt](http://gruntjs.com/) for compiling LESS to CSS, checking for JS errors, live reloading, concatenating and minifying files, versioning assets, and generating lean Modernizr builds.

### Install Grunt and Bower

[](#install-grunt-and-bower)

**Unfamiliar with npm? Don't have node installed?** [Download and install node.js](http://nodejs.org/download/) before proceeding.

From the command line:

1. Install `grunt-cli` and `bower` globally with `npm install -g grunt-cli bower`.
2. Navigate to the theme directory, then run `npm install`. npm will look at `package.json` and automatically install the necessary dependencies. It will also automatically run `bower install`, which installs front-end packages defined in `bower.json`.

When completed, you'll be able to run the various Grunt commands provided from the command line.

**N.B.**You will need write permission to the global npm directory to install `grunt-cli` and `bower`. You will also likely have to be using an elevated terminal or prefix the command with `sudo`, i.e., `sudo npm install -g grunt-cli bower`.

We also advise against running as root user. NPM deliberately uses limited privileges when executing certain commands such as those included in the Canvas post-install process, and when this happens to the root user, any file system objects that are not expressly writable by the root user will fail to write during the execution of the command. These might include directories such as `/var/www` or `/home/someotheruser`. If you're running as root and have problems, don't say we didn't warn you.

### Available Grunt commands

[](#available-grunt-commands)

- `grunt dev` — Compile LESS to CSS, concatenate and validate JS
- `grunt watch` — Compile assets when file changes are made
- `grunt build` — Create minified assets that are used on non-development environments

###  Health Score

22

—

LowBetter than 22% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity6

Limited adoption so far

Community20

Small or concentrated contributor base

Maturity41

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 64.2% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

### Community

Maintainers

![](https://www.gravatar.com/avatar/8deead49df3205ca08127866adcc5146559895aec400119a64ffe6f4e6477c65?d=identicon)[haddowg](/maintainers/haddowg)

---

Top Contributors

[![retlehs](https://avatars.githubusercontent.com/u/115911?v=4)](https://github.com/retlehs "retlehs (712 commits)")[![swalkinshaw](https://avatars.githubusercontent.com/u/295605?v=4)](https://github.com/swalkinshaw "swalkinshaw (193 commits)")[![Foxaii](https://avatars.githubusercontent.com/u/1690407?v=4)](https://github.com/Foxaii "Foxaii (48 commits)")[![weslly](https://avatars.githubusercontent.com/u/107672?v=4)](https://github.com/weslly "weslly (18 commits)")[![QWp6t](https://avatars.githubusercontent.com/u/2104321?v=4)](https://github.com/QWp6t "QWp6t (16 commits)")[![coreywagehoft](https://avatars.githubusercontent.com/u/767849?v=4)](https://github.com/coreywagehoft "coreywagehoft (14 commits)")[![leoj3n](https://avatars.githubusercontent.com/u/990216?v=4)](https://github.com/leoj3n "leoj3n (12 commits)")[![cfxd](https://avatars.githubusercontent.com/u/1671933?v=4)](https://github.com/cfxd "cfxd (9 commits)")[![haddowg](https://avatars.githubusercontent.com/u/10784397?v=4)](https://github.com/haddowg "haddowg (7 commits)")[![lautreamont3](https://avatars.githubusercontent.com/u/4511349?v=4)](https://github.com/lautreamont3 "lautreamont3 (7 commits)")[![johnraz](https://avatars.githubusercontent.com/u/304164?v=4)](https://github.com/johnraz "johnraz (6 commits)")[![hariadi](https://avatars.githubusercontent.com/u/376635?v=4)](https://github.com/hariadi "hariadi (5 commits)")[![kalenjohnson](https://avatars.githubusercontent.com/u/2036520?v=4)](https://github.com/kalenjohnson "kalenjohnson (5 commits)")[![dvregan](https://avatars.githubusercontent.com/u/1561385?v=4)](https://github.com/dvregan "dvregan (5 commits)")[![zensimilia](https://avatars.githubusercontent.com/u/1010963?v=4)](https://github.com/zensimilia "zensimilia (4 commits)")[![cabgfx](https://avatars.githubusercontent.com/u/530941?v=4)](https://github.com/cabgfx "cabgfx (4 commits)")[![chriscarr](https://avatars.githubusercontent.com/u/753310?v=4)](https://github.com/chriscarr "chriscarr (4 commits)")[![mwrather](https://avatars.githubusercontent.com/u/923760?v=4)](https://github.com/mwrather "mwrather (4 commits)")[![HansCz](https://avatars.githubusercontent.com/u/19244?v=4)](https://github.com/HansCz "HansCz (3 commits)")[![limenet](https://avatars.githubusercontent.com/u/474329?v=4)](https://github.com/limenet "limenet (3 commits)")

### Embed Badge

![Health badge](/badges/haddowg-canvas/health.svg)

```
[![Health](https://phpackages.com/badges/haddowg-canvas/health.svg)](https://phpackages.com/packages/haddowg-canvas)
```

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
