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:
Using Docker for Development
A Docker setup potentially makes development and deployment easier.
Then build the Docker images with:
Once the above command finishes, run:
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
If you'd like to run Checklistomania locally, follow these steps:
Clone Checklistomania and
cd into its directory.
Install local Node.js dependencies with:
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
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 export BRAND_HEADER_COLOR=\#B3EFFF
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.
Make sure you have MongoDB running locally:
Run the Checklistomania application:
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:
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.
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.