Business class content management for Node.js (plugins, server cluster management, data-driven pages)
Clone or download
brianhyder Merge pull request #1243 from lgenet/ts-register-for-each
Template Service - Register Locals for Each
Latest commit 522def1 Apr 12, 2017
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github Added template field for Node Version May 8, 2016
controllers Merge branch 'master' into 0.8.0 Jan 5, 2017
include Merge pull request #1243 from lgenet/ts-register-for-each Apr 11, 2017
lib Config file cleanup and start of PencilBlue modularization Jan 28, 2015
plugins Fix the issue that can cause pencilblue crashing when there is an uns… Feb 23, 2017
public Fix config file extension on and in other files Jan 18, 2017
test #1206 fixed issue where unauthorized access of a route that did not h… Jan 22, 2017
.bithoundrc #1059 One more small update because I'm blind May 29, 2016
.bowerrc added bower dependencies Aug 13, 2014
.editorconfig #501 - Wired up ability to add alternate locales for views Oct 26, 2015
.gitignore Fix config file extension on and in other files Jan 18, 2017
.istanbul.yml updated exclusions Mar 11, 2015
.npmignore updated to master Jul 13, 2014
.travis.yml #970 attempting to see if travis will build PB against node 7 Nov 30, 2016
LICENSE updated to master Jul 13, 2014 minor fix: fixed launch on openshift button Apr 7, 2017
bower.json added angular 1.2.15 force Aug 6, 2016
nodemon.json #1006 Cleanup of nodemon ignore files May 29, 2016
package.json Cleanup - updated version numbes Dec 13, 2016
pencilblue.js #1210 Fixes issue where middleware is not registered before plugins a… Feb 1, 2017
sample.config.js Fix config file extension on and in other files Jan 18, 2017
yuidoc.json Cleanup - updated version numbes Dec 13, 2016

dependencies Coverage Status Build Status bitHound Overall Score Join the chat at


A full featured Node.js CMS and blogging platform (plugins, server cluster management, data-driven pages)

First and foremost: If at any point you have questions, comments or concerns you can find us hanging out on twitter @getpencilblue and on our subreddit. We're always happy to help and pull requests (plugin or core) are always welcome.

To learn how to build websites with PencilBlue, read our tutorials.

The first open source content management system to meet all the needs of a modern website:

  • Full blogging capabilities, out of the box
  • Relational data creation and management, through the admin interface
  • An expansive plugin framework that allows for modification of even core platform functionality
  • Designed for the cloud, with built in support for server clustering and high availability websites
  • Built in support for some of the latest and most popular web technologies, including MongoDB, Redis, Bootstrap, AngularJS, and jQueryUI
  • 100% mobile ready through responsive web design
  • Touch friendly, drag and drop website management experience that's easy for non-technical users to learn

Read the Quickstart Guide



The instructions below assume that Node.js [0.11, 6] and MongoDB [2, 3) are installed on your machine. If they are not then please visit and to install them.

PencilBlue Command-line interface
  1. Install the pencilblue-cli module: sudo npm install -g pencilblue-cli
  2. Run pbctrl install [directory] where [directory] is the directory you want PencilBlue to be installed to.
  3. Follow the install instructions
  4. After the installation is done, cd into the folder where you installed PencilBlue
  5. Run pbctrl start
Manual installation
  1. Clone the PencilBlue repository
  2. cd into the cloned repository's folder
  3. Run npm install to retrieve PencilBlue's dependencies. Depending on your system access privileges, you may have to run sudo npm install
  4. (Optional) Install Redis for caching
  5. (Optional) Create a custom configuration file using the provided sample.config.js. The file can reside in two places: within the root folder of your installation as config.js or at /etc/pencilblue/config.js. The installation root takes precedence. If running all services locally, no configuration file is needed, but a configuration file is necessary for overriding specific settings.
  6. Start PencilBlue. You can simply run node pencilblue, but we recommend using nodemon for development and forever for production. Nodemon will restart PencilBlue on file changes and forever will ensure that PencilBlue is always running.
# development
nodemon pencilblue


# production
sudo forever start pencilblue.js
  1. Navigate to the site root you specified in a configuration file or http://localhost:8080 by default.

0.5.0 Release:

Target Date: Mid-December 2015 New Features:

  • Multisite support
  • #501 - Route localization

The full list can be found here.

Features in progress: Check out our Waffle board.

Help & Support

Aways start with our wiki or code level documentation. The source never lies. Additionally, always feel free to leave questions on our issues page or reach out to us on Twitter at @GetPencilBlue.

Submitting Issues: When submitting an issue or request for help please provide the following information.

  1. Step by step instructions to reproduce
  2. Configuration overrides (minus any credentials)
  3. Environment details: Linux, windows, hosting provider, local, etc.
  4. Log output. Set your logging.level configuration property to "silly".

Submitting a Pull Request:

  1. Provide a detailed description of what changed.
  2. Reference any related issues by number so they can be tracked and linked back to the PR.
  3. Document any new functions so they show up in our auto-generated documentation
  4. Create tests for any new functionality
  5. RUN npm test
  6. Bug fixes should be merged to master & features should be merged to the next release branch