Skip to content

Working On is the public-facing result of all the work we do. The site is built in Django and includes the web frontend and API.

Checking out

Fork and clone the repository:

  • Visit and click the 'Fork' button.

  • Clone your fork using your tool of choice or the command line:

    $ git clone
    Cloning into ''...
  • Be sure to run poetry install to fetch the correct version of dependencies.

  • And remember to install pre-commit <pre-commit>:
    $ pre-commit install
    pre-commit installed at .git/hooks/pre-commit

Getting a working database

See Running a Local Database to get your database ready for

Running Tests

You can run the tests for the project via:


You can also append standard pytest arguments such as -x to bail on first failure.

Example of running just the graphapi tests, bailing on error:

./docker/ graphapi -x

Repository overview

The project is rather large, with quite a few django apps, here's a quick guide:

Django Apps:

  • bulk/ - handles bulk downloads on the website
  • dashboards/ - dashboards for viewing various statistics
  • geo/ - geography services for legislator lookup
  • graphapi/ - powers GraphQL API
  • profiles/ - user and subscription management
  • public/ - public-facing pages (bulk of the site)
  • utils/ - utilities shared by the other applications

Other Stuff:

  • ansible/ - the files used to deploy are here
  • docker/ - special scripts for running tests, etc. within docker
  • openstates/ - core Django settings files
  • static/ - various static assets, including frontend code
  • templates/ - Django templates


Simply running docker-compose up should start django & the database, then browse to http://localhost:8000 and you'll be looking at your own local copy of In a separate terminal window, run npm run build and npm run start to see the site's react and style components.


If you're running into issues with models not being found or an incorrectly configured virtual environment, running docker-compose build should help to fix it.

If you have issues getting your instance up and running, please document the errors you're seeing and reach out.

Running outside of Docker

It might be desirable to test outside of docker sometimes to bypass caching or other issues that make development within the docker environment difficult. If so, you can install goreman (or any foreman clone) and run goreman start.

Back to top