Skip to content
Switch branches/tags

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

Punchcard CMS Build Status Coverage Status Code Climate


Headless Content Management System designed with content strategy at its heart. Built with Node.

Install and Usage

npm i punchcard-cms --save
const punchcard = require('punchcard-cms');

punchcard().then(app => {

Setting File Storage

Punchcard uses any Vinyl Adapter that your heart desires. A good first place to start is searching for vinyl on NPM. Punchcard assumes all vinyl adapters are named vinyl-adapter.

Developing Locally

Make sure PostgresSQL is set up locally (see below)

Install all the things

npm install

Run the following to run both the database and get the server running:

$ npm run dev

debug mode

Uses node's built in inspector. This works in chrome only.

$ npm run dev:database

then in a separate window:

$ npm run debug

There will be instructions and a link to paste into chrome shown in the terminal after this debug command is run.

Setting up PostgreSQL locally

  1. Make sure you have homebrew installed: /usr/bin/ruby -e "$(curl -fsSL"

  2. brew update

  3. brew install postgres

  4. start the postgres server: postgres -D /usr/local/var/postgres

  5. open new terminal tab

  6. create a postgres user (it'll prompt for a password use W@ts0n): createuser punchcard -P

  7. Create local CMS database: createdb -O punchcard punchcard

  8. Create local test database: createdb -O punchcard punchcard_test

  9. reconnect to psql as new user: psql -d punchcard -U punchcard

  10. connect to db: \connect punchcard

Once you are connected you should be able to use psql cli syntax to check tables.

  • \d+ checks table relations
  • \l lists all available databases
  • select * from "database_name"; Displays all rows in database, replacing database_name with the table you want to see.
  • list all tables for user punchcard: \c punchcard \dt


See the latest release for the most recent changelog