Giter VIP home page Giter VIP logo

checklistomania's Introduction

Checklistomania

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.

The default setup for local development is with Docker. If you prefer not to use Docker you can skip this section and follow the legacy setup docs below.

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 run app npm install

which will install node and bower dependencies.

Then 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 without Docker (Legacy)

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
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.

export PORT=3000

Make sure you have MongoDB running locally:

mongod

Run the Checklistomania application:

npm start

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

Testing

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

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.

checklistomania's People

Contributors

afeld avatar allalala avatar anthonygarvan avatar cmc333333 avatar cndreisbach avatar danpaz avatar datn avatar ericschles avatar esgoodman avatar fureigh avatar gboone avatar hollyallen avatar jseppi avatar keithrwilson avatar mheadd avatar nicoleslaw avatar nkkl avatar noahkunin avatar rdpiazza avatar tbaxter-18f avatar toolness avatar waldoj avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

checklistomania's Issues

Item Order Not Quite Correct

In the example test case, the item order is not correct. It does not work when an item is dependent on non-actionable items.

Add a checklist item for all new hires to have a talk about 18F and D&I

In order for new hires to get up to speed about the diversity efforts at 18F, an item or series of items would helpful to remind their onboarding buddy / facilitator to go over and have it in checklistomania.

Existing materials:
@jacobian's 1:1 guide has a section Conversations about Diversity and Inclusion. Might be useful to have a checklist item such as "Make sure you have this conversation within the first X days"

@keithrwilson @elainekamlley @annalee @leahbannon @JenTress @smils

Just want to use this a brainstorming issue. Can split it out to individual issues for each checkbox

Add conditional checklists

Should extend syntax of checklist + support in UI options for composing checklist from a radio button / checkbox. Examples include:

  • Is the app on cloud.gov?
  • Check all topics this piece of content describes.

README Install instructions are unclear to non-technical reader

cc @melodykramer, @anthonygarvan

The Checklistomania README has some non-clarities:

  1. The audience of the install instructions isn't clear
  2. The requirements section doesn't explain what the requirements do for the project
  3. The command to install the dependancies is unclear about the exact commands to use
    • It might be worth just listing the requirements with the install commands npm install MongoDB and npm install nodejs
  4. It's unclear why we need developer GitHub client information.
  5. Should link to instructions to run MongoDB locally.
  6. Unclear how running MongoDB and npm start will actually launch Checklistomania.

Select Node Version

  • package.json specifies 4.4.0
  • .travis.yml specifies 0.12

We could probably safely move to 6.x.x, depending on support in Cloud Foundry. Travis appears to support 6.x.x.

Obsolete checklist item?

This item didn't work for me. Also, there appears to have been a period of time at 18F earlier this year where bots were disabled in Slack(?). Could this item have become obsolete during that time?

Public repo summary includes link that appears to be for 18F staff only

This seems wildly useful for folks I know who work in HR, onboarding, and learning & development. These folks aren't developers but would definitely want to play around with the app.

The repo summary at https://github.com/18F/checklistomania currently says

Centrally managed todo lists for complex processes - onboarding, offboarding,
management changes, etc. https://checklistomania-dev.apps.cloud.gov/

I expected that URL to be of a public demo instance of this app. But when I oAuthed in with my GitHub credentials, I was shown the error message "Sorry, you are not authorized. You must be a member of the 18F team on github to access this app."

If the instance at https://checklistomania-dev.apps.cloud.gov/ is not intended to be a public demo of this app, no worries, but I recommend removing it from the repo description.

Bonus suggestion: Stand up a public demo instance of Checklistomania, either read-only or with data that gets reset periodically, so that non-developers can play around with this system and see if it'd work for them.

Thanks!

Add Docker for easy development setup

Right now getting setup for development is a bit arduous. We should include some nice docker-compose stuff to get developers off the ground more easily.

Calendar only shows 5 days a week

The calendar widget shows seven day columns (S, M, T, W, T, F, S) but only five dates (Sunday through Thursday it looks like) in the grid.

screen shot 2016-02-16 at 11 18 21 am

Add Admin Interface

Currently the checklists are hard coded in JSON, which means any changes require a dev to redeploy. This has worked for us, but if we want the project to be more widely used within and outside of government, we will need to add an admin interface for creating, modifying, and deleting checklists and checklist items.

Add Gentle Reminder Email

Tentative design is to send a status email 1x a week, if there are items due that week or past due. Email should list all items in order of priority and link to checklistomania.

License?

I thought our repos had some default license language, unsure.

Show Items which are "Done" and "Not Actionable"

It would be useful to just see the full list of everything that is on the list, grouped by what state it's in. It's nice to be able to confirm "yes I did that" and would also help reduce confusion over "where did this item come from?"

Why do I need to set up an OAuth application to try this out?

It seems like a high barrier to entry to require me to create a Github OAuth application to run this locally.

Is there a way to run this in an 'unauthed' debug mode? If not, could you be more explicit in the readme as to why this is a hard requirement?

Add Non-18F User Authentication

This came up in a thoughtful response on HackerNews- if this tool is going to be used outside 18F, it's time to have a story for more options for authentication, probably including google and vanilla email auth.

Improve front-end testing

Right now the front-end karma tests need a global installation of karma-core. I think this could be improved. Once it is, update README per #45.

Login button glitchy

It is sometimes necessary to click the login button multiple times before it will actually let you in.

TODO Items Appear Out Of Nowhere

User experience / discoverability issue: When you mark items as done, new items which depend on that item "appear out of nowhere" because they can now be acted upon. This is confusing, and requires people to know about the dependency model, which is not intuitive.

Consider changing descriptions of lists to not use the word "TODO"

When I first logged into Checklistomania on my first day of work at 18F, I saw this:

screen shot 2016-05-16 at 7 16 10 am

This sounds kind of meta, but I immediately read "TODO" as meaning "This is something we haven't yet implemented in Checklistomania yet". In other words, I thought it was a note from the creators of Checklistomania to remember to actually write a checklist, rather than an actual fully-completed checklist ready for use.

I think this confusion could have been alleviated if "TODO" were simply written "To-do". Or, alternatively, the phrase "TODO Items" could be replaced with "A checklist". If either of these seem amenable, I'm happy to issue a PR.

That said, this might just be something that confused me, rather than something that could be confusing to others, in which case feel free to close this issue.

Update to new 18F visual style

  • update logo
  • change header color
  • while we're at it, it might be good to put these 2 things (header color, logo url) into environment variables so that the app can be rebranded without code changes.

Add Roles for Checklists

Currently everyone can see everyone else's checklists. Would be good to create roles that at least provide a more limited default view.

Small readme suggestion - add screenshots

This seems like a tool that other teams in other places could eventually adapt/reuse! If there isn't a publicly-visible version (I'm guessing there might not be), it'd be cool to see a couple of screenshots in the readme so that external people can understand more about how it works. :)

Poor performance on Prod

Production seems very slow to mark an item finished. Seems to depend on number of items in a list (pretty bad for new hire list).

Fix CSS Error for new checklists in USERS tab

The real checklists that Melody has committed have longer titles than the ones I tested with, which make them look staggered and awful, which in turn brings great shame. Should be easily fixable using the flow commands built into angular js, or by making them 2 / 3 columns instead of 4.

First time use of checklistomania leads to minor confusion

Hi all,

Just started at 18F (first day is monday) and I was going through checklistomania - super awesome app! I was trying to figure out how to check things off my tasks. Had to ask how to do this.

Proposed change:

Tasks Tab to My Tasks Tab Or Tasks Assigned To Me Or Tasks I Control

This gives the user an intuitive sense that these are there tasks.

Unclear if this is a good change

Add CF instructions for Devs

https://github.com/18F/cf-hello-worlds exists.

I think it would be helpful for newcomers to learn two specific things:

"if you need to get something online, then you need to use cloud.gov"

Then "this is how you put something online using cloud.gov"

I think being led to docs.cloud.gov can be overwhelming and lets them know about features, but they’re not necessarily making the connection that they should use it for everything.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.