Cliff effects guidance prototype
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
.github Move .github folder to root directory Nov 10, 2017
feedback More accurate description of client data May 7, 2018
public Fix app name in manifest Jan 2, 2018
redirect Merge branch 'dev' of Sep 21, 2018
support/netlify Deploy preview for netlifly Jul 25, 2018
.eslintrc.json Add jsx indent eslint rules and fix ternary operators Aug 26, 2018
.gitignore Add generated docs to .gitignore Aug 15, 2018
LICENSE Adds name of license Oct 19, 2017 Changes explanation of not allowing certain inputs Oct 2, 2018 Restores README. Not sure how that happened... Oct 2, 2018
jsdoc.json Polish comments in App.js, enable markdown in jsdoc Oct 2, 2018
package.json Removes carats from deps Oct 13, 2018

cliff-effects TravisCI CodeCov

cliff effect: You are a person on government benefits, and you get a raise. You're making more money! But now that your income is higher, you don't make the cutoff for the benefits you receive. Even though you're taking home more money, your situation is worse. Some of your benefits drop to nothing, or almost nothing. You've fallen off "the cliff."

We are building the Cliff Effects webapp to help* Project Hope case managers make quantifiable predictions about their clients' potential cliff effects - and advise their clients accordingly.

(* Case workers handle their clients' problems on the ground; they aren't responsible for navigating benefit programs' complex policies and do not have the time/resources to translate those policies into models.)


If you want to see a very broad overview of the code flow and some thoughts for next steps, see our Overview wiki page.

We currently have a ReactJS frontend prototype and start going into beta testing at the end of January.

We are working on:

  • User testing: Beta testing with case managers is about to start.
  • Infrastructure: Strengthening the code we have to make it more robust and maintainable, including testing.
  • Translation: Implementing a translation system for non-English readers.

How Can I Contribute?

  1. Familiarize yourself with the frontend.
  2. Decide whether you want to work on benefit calculations, code quality, data visualization, user experience, or project management.
  3. If you plan to develop code, set up your environment.

We use GitHub Issues to organize our work. Here's some quick reading about how to use issues, and here's the Cliff Effects issues board.

Environment Setup

To follow these instructions, it'd help if you:

  • have mentally prepared for experimentation and learning and/or
  • know how to open your terminal/command prompt
  • know a bit about how to navigate to different folders in your terminal
  • know a bit about installing software for your terminal, like nodejs


  1. If you're new to github look at How to: fork a repo. Otherwise, fork and clone the repo, creating a link (remote branch) to the Code for Boston repo.
  2. In your termainal/command prompt, do git checkout dev. Do not touch the master branch.
  3. If you have nodejs, version 5.0+ is desired. If you don't, install it. If you don't know, do node --version in your terminal/command prompt. If you don't get a number, you don't have it.
  4. In your command prompt/terminal, do npm install. This might take a few minutes. Now you'll be able to try out the current UI or play with the code!
  5. Do npm start in terminal to automatically open a new browser tab and see a local version of the site. Works best in Chrome.
  6. npm bug workaround: please run git checkout . after any instances of running npm install. This is to circumvent a bug affecting the integrity of the package-lock.json file.
  7. Saved changes will automatically be reflected in-browser. If you don't see the changes, refresh the page. If nothing has changed, ask for help!
  8. Press cltr+c to stop the local server that you have running.

To get yourself set up to keep up to date with the latest changes to the dev branch, make sure you've gone through Step 3 of the github guide. To keep your branches from getting tangled as you both make changes and keep up to date with our repo, take a look at our wiki page about a possible Github workflow.

If you're interested in more in-depth debugging, we also recommend getting the React Developer Tools extension for Chrome.

If you have questions, feel free to ask.


We use React-Scripts test command (which wraps the Jest test framework) to run our automated test suite.

To run our test suite, run npm run test. That will run any tests that have changed since the last commit, and boot up an interactive testing session. The interactive session will prompt you with instructions, but the most important commands are a to run all tests, and q to quit the interactive session.

For information on how to write new tests, please refer to the React-Scripts documentation on the subject.



We're building the project with React. The app was set up with the Create React App CLI.


Aren't familiar with Git? Spend ~15 minutes learning with this interactive Git tutorial. Don't use -f or --force with branches that you have used to create a pull request.

More familiar with git, but not as familiar with collaboration? See a possible Github workflow that could help keep things from getting messy.