Centrally managed todo lists for complex processes - onboarding, offboarding, management changes, etc.. Link for 18F members:
JavaScript CSS HTML
Latest commit 6c9ee2d Dec 29, 2016 @jseppi jseppi committed on GitHub test that dependencies actually exist (#136)
Failed to load latest commit information.
api add Docker for easy dev (#100) Aug 18, 2016
checklists New Checklist for Assignees/Details (#132) Dec 29, 2016
lib move includeBranding to middleware, add tests May 19, 2016
private Preview checklist (#84) Jun 8, 2016
public updating todos -> tasks in readme Mar 3, 2016
scripts Use airbnb-base eslint config (#90) Jul 15, 2016
spec test that dependencies actually exist (#136) Dec 29, 2016
views change 'Tasks' to 'My Tasks' (#135) Dec 29, 2016
.bowerrc removed phantom, got karma running with istanbul Jan 20, 2016
.cfignore add docker files to cfignore Aug 18, 2016
.eslintignore Use airbnb-base eslint config (#90) Jul 15, 2016
.eslintrc Use airbnb-base eslint config (#90) Jul 15, 2016
.gitignore removed phantom, got karma running with istanbul Jan 20, 2016
.istanbul.yml adjust istanbul excludes May 18, 2016
.travis.yml upgrade to node 6.9.1; rm phantom install from dockerfile; upgrade ka… Nov 17, 2016
CONTRIBUTING.md adding contributing and beefing up readme Dec 23, 2015
Dockerfile upgrade to node 6.9.1; rm phantom install from dockerfile; upgrade ka… Nov 17, 2016
LICENSE.md adding license Dec 23, 2015
README.md add notes about development github credentials Nov 6, 2016
app.js fix typo: environmental -> environment Jun 6, 2016
bower.json lock angular-animate to same version as angular Dec 20, 2016
docker-compose.yml doh, rm leftover markdown formatting Nov 6, 2016
karma.conf.js get istanbul working again; reorganize test files May 18, 2016
package.json upgrade to node 6.9.1; rm phantom install from dockerfile; upgrade ka… Nov 17, 2016



Build Status Coverage Status

This tool is a checklist manager with some neat-O features:

  • Focus on what is actionable: central page is a simple list of things you can take action on now, in order of urgency.
  • Checklists are centrally defined, allowing any member to subscribe to the authoritative checklist.
  • Checklist items deadlines can be set according to a fixed date or relative to completion of other items.
  • All members of team can view other peoples checklists, so admins can see everyone's status at a glance.

Here's some screenshots to give you a sense of the look & feel:

The tasks tab provides a centralized place for all your todo items: Todos

The checklists tab is where you assign yourself a new pre-defined checklist: Checklists

The users tab is where you can view the status of other team members action items, helpful if you want a hint or if you are an admin keeping track of where everyone is: Users

Running Checklistomania

Checklistomania is a Node.js application on the back-end, and its front-end is an AngularJS single-page application.

Using Docker for Development

A Docker setup potentially makes development and deployment easier.

To use it, install Docker and Docker Compose and read the 18F Docker guide if you haven't already.

Then build the Docker images with:

docker-compose build

Once the above command finishes, run:

docker-compose up

This will start up all required services in containers and output their log information to stdout. You should be able to visit http://localhost:3000/ to view the site.

To run any arbitrary command in the context of the application container, run:

docker-compose run app <THE COMMAND>

For example, to run bash in the app container, run:

docker-compose run app bash

In the app container, /home/app/checklistomania is mapped to your host machine's checklistomania directory.

To run a command in the mongo container, run:

docker-compose run mongo <THE COMMAND>

To remove all Docker images associated with this project, run

docker-compose down -v

Running Locally

If you'd like to run Checklistomania locally, follow these steps:

First, install Node.js (Download page) and MongoDB (Installation instructions). Make sure you have the same version of Node.js as specified in package.json.

Clone Checklistomania and cd into its directory.

Install local Node.js dependencies with:

npm install

Checklistomania uses GitHub for user authentication. All users must be registered on GitHub and must be part of a GitHub organization. Users will need to set their organization membership to public (see instructions here).

Specify GitHub application credentials as environment variables. You can use the test credentials below, or create your own credentials here and set GITHUB_ORG to a GitHub organization name of your choice.

NOTE: These credentials are for development only. They are not to be used in any live version of Checklistomania or any other application.

export GITHUB_CLIENT_ID=0a363c03ec2646619f57
export GITHUB_CLIENT_SECRET=01408892458c92e3514cd96cd6b31e6d91df25d2
export GITHUB_ORG=18F
export SESSION_SECRET=testSessionSecret

In production, make sure to set SESSION_SECRET to a long random string.

You will also need to set GITHUB_CALLBACK_URL to the correct callback url for your domain. Its value should be of the form https://<your-domain>.com/auth/callback.

If you'd like to customize the look a little, you may specify a logo path and a header color (as a valid HTML hex code or color name) as environment variables as well, otherwise 18F brand defaults will be used:

export BRAND_LOGO_PATH=/private/img/18F-Logo-M.png

You can also customize the port (which defaults to 3000) that the server listens on. If you do change it, make sure your registered GitHub callback matches the new port.

export PORT=3000

Make sure you have MongoDB running locally:


Run the Checklistomania application:

npm start

Visit http://localhost:3000/ to see the locally running Checklistomania application.


Make sure you have the same version of Node.js as specified in package.json, otherwise you may have trouble running the front end tests.

If you are using Docker for development, run:

docker-compose run app npm test

If you are running Checklistomania locally, run:

npm test

Run eslint either via a code editor plugin (such as Atom's linter-eslint), or from the command line. If you are using Docker, run:

docker-compose run app npm run eslint

If you are running locally, run:

npm run eslint


For 18Fers: this is deployed on cloud.gov. Get started on cloud.gov by following the instructions here. Ask for more details in the #checklistomania channel in slack.

Public domain

This project is in the worldwide public domain. As stated in CONTRIBUTING:

This project is in the public domain within the United States, and copyright and related rights in the work worldwide are waived through the CC0 1.0 Universal public domain dedication.

All contributions to this project will be released under the CC0 dedication. By submitting a pull request, you are agreeing to comply with this waiver of copyright interest.