CALC is primarily a Django project.
CALC uses Docker and Docker Compose to make setting up a development environment easier.
If you are unfamiliar with Docker or Docker Compose, read their docs as well as the 18F Docker guide.
First, install Docker, as well as Docker Compose if it's not included in your system's Docker installation.
Check that both are installed by running:
docker -v
docker-compose -vwhich will output the version numbers of each tool if the installation worked as expected.
During development, the project reads environment variables from a .env file, which
you can create by running:
cp .env.sample .envEdit the .env file to your tastes. You shouldn't need to change much here; but if you'd like to see the available options, see Environment variables for details on configuration.
You'll also need to symlink docker-compose.local.yml to docker-compose.override.yml. On Linux and OS X, this can be done via:
ln -sf docker-compose.local.yml docker-compose.override.ymlHowever, if you're on Windows, use:
mklink docker-compose.override.yml docker-compose.local.ymlIf that doesn't work, you will have to copy the file instead of symlinking it.
Run
./docker-update.shThis script will install/update all Python and Node dependencies, as well as apply any necessary database migrations.
You'll also want to run this script whenever you update your local repository via commands like git pull or git checkout.
You can optionally load some data into your dockerized database with:
docker-compose run app python manage.py load_api_data --end-page=5This will load about 1000 rates from the production CALC instance into your local CALC instance. You can increase the value passed to the --end-page argument to increase the amount of data that is copied over, or you can leave out the argument entirely to transfer all of CALC's data, but it may take some time.
Now you can start the development server:
docker-compose upThis will start up all required servers in containers and output their log information to stdout. It might take a couple minutes for all the front end assets to be built, but once you see a message that looks something like this:
gulp_1 | [19:15:54] -----------------------------------------
gulp_1 | [19:15:54] Visit your CALC at: http://localhost:8000
gulp_1 | [19:15:54] -----------------------------------------You can visit http://localhost:8000/ to see your local CALC instance.
For more information on interacting with CALC's dockerized development environment, see the Using Docker section of our docs.