Source code for PolicyBrain, ospc.org, and related assets.
CSS Python HTML JavaScript
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
.profile.d initial commit Jul 21, 2015
distributed Remove obsolete install script Mar 30, 2018
docs Small title changes. Oct 6, 2017
fixtures initial commit Jul 21, 2015
static incorporate pr 846 Mar 19, 2018
staticfiles Add back static files Mar 30, 2018
templates use btax header Apr 2, 2018
webapp Add comments to new test Apr 4, 2018
.buildpacks initial commit Jul 21, 2015
.condarc No longer use binstar endpoint. Jun 27, 2017
.gitignore Remove 'staticfiles/' from gitignore Mar 30, 2018
.travis.yml Conda update fails in .travis.yml Mar 23, 2018
DATABASE.md Fix section formatting for DATABASE.md Mar 22, 2018
LICENSE initial commit Jul 21, 2015
PARAMETERS.md Add parameters policy document Feb 23, 2018
Procfile restrict request body size to 2MB Oct 5, 2016
README.md Specify that we are using bash Mar 21, 2018
RELEASES.md Update RELEASES for PR 849 Mar 30, 2018
RELEASE_PROCESS.md fix number types Jul 28, 2017
bower.json Added media logos and links May 18, 2016
conda-requirements.txt Update to TC 0.18.0 Mar 30, 2018
copy_static.py update staticfiles/ Aug 12, 2016
custom_work.py initial commit Jul 21, 2015
environment.yml Perhaps conda likes yml files more than one-liners Mar 23, 2018
flatblocks.json Put 'get-started' tag directly on Get Started text Apr 13, 2016
flatblocks_heroku.json Navbar updated, gettingstarted page created, youtube videos added Oct 11, 2017
gulpfile.js Fixed Taxbrain Formatting Mar 9, 2016
manage.py initial commit Jul 21, 2015
package.json Update readme, package.json. Jan 3, 2017
post_reform.py Post reform to production website Jan 9, 2018
pytest.ini initial commit Jul 21, 2015
python_env_build.sh Perhaps conda likes yml files more than one-liners Mar 23, 2018
requirements.txt adds toolz package Mar 23, 2018
requirements_dev.txt add missing pytest-django dev requirement Aug 15, 2016
sendfile.py Adds dumped JSON data of flatblocks on heroku Dec 31, 2015
webapp_env.sh Go back to 5050 port for flask app Mar 13, 2018

README.md

About PolicyBrain

PolicyBrain provides a platform for open-source policy simulation models. It serves as an interface to powerful models for those who do not want to work directly with the models themselves. PolicyBrain’s primary jobs are to send the user-input to the models, provide feedback if the user-input causes warnings or errors, schedule jobs on available machines, retrieve the results from the models, and deliver the results to the user. Essentially, PolicyBrain provides the infrastructure and resources for the models that it hosts.

The apps that are currently hosted are TaxBrain and Cost-of-Capital Calculator. TaxBrain enables the user to perform static and dynamic analyses on their specified personal income tax reform. Cost-of-Capital Calculator enables the user to perform a static analysis on their specified business tax reform.

PolicyBrain is a Django app which is deployed on Heroku and uses Flask, Celery, and Redis to schedule jobs.

Release Process

To review the steps for the release process, see RELEASE_PROCESS.md

Local Deployment Setup

First, if you plan on contributing to PolicyBrain, then fork PolicyBrain and work off of that fork. If you do not plan to contribute, then you can clone the main repo.

Make sure that the local Postgres Server is running. Then, open a terminal window and run the following commands using bash:

# swap out YOURUSERNAME with OpenSourcePolicyCenter if you did not fork this project and
# your user name if you did
git clone https://github.com/YOURUSERNAME/PolicyBrain.git
cd PolicyBrain
git remote add upstream https://github.com/OpenSourcePolicyCenter/PolicyBrain
pushd deploy
./install_taxbrain_server.sh
popd
export DATABASE_USER=YOUR_POSTGRES_USERNAME DATABASE_PW=YOUR_POSTGRES_PASSWORD
source activate aei_dropq && source webapp_env.sh
python manage.py collectstatic
python manage.py migrate
python manage.py runserver

Now, the Django app should be up and running. You can access the local instance of https://www.ospc.org/ at http://localhost:8000. Next, set up Redis, Flask, and Celery. This step allows you to submit and run jobs. In another terminal, run the following commands using bash:

# Go to the PolicyBrain directory
cd PolicyBrain/
source activate aei_dropq && source webapp_env.sh
cd deploy/taxbrain_server

# ignore the following block if you do not have access to the taxpuf package
conda config --add channels 'https://conda.anaconda.org/t/YOUR_TOKEN_HERE/opensourcepolicycenter'
conda install taxpuf
write-latest-taxpuf
gunzip -c puf.csv.gz > puf.csv

supervisord -c supervisord_local.conf

Now, that the server has been installed, you can start it up simply by running:

export DATABASE_USER=YOUR_POSTGRES_USERNAME DATABASE_PW=YOUR_POSTGRES_PASSWORD
source activate aei_dropq && source webapp_env.sh
python manage.py runserver

and in another terminal window, run:

source activate aei_dropq && source webapp_env.sh
cd deploy/taxbrain_server && supervisord -c supervisord_local.conf