- NodeJS and npm
- Rust (current stable or nightly)
- PostgreSQL
- Docker
- On MacOS, ensure your docker VM has sufficient resources, at least 2vCPUs and 8GB of RAM.
- docker-compose >=v2.27.0
- On MacOS, install this through
brew. Notice this calls for extra modifications to~/.docker/config.json. - On Linux, install
docker-compose-pluginfrom thedocker-cerepository. See the OS-specific instructions here. - Alternatively, for both platforms, you can install the binary plugin.
- On MacOS, install this through
Some Rust dependencies require additional system dependencies. These can be installed with your usual package manager:
- C compiler (GCC or Clang)
- CMake
This will get you up and running quickly for development purposes.
- Clone the repository and navigate to its root.
- Execute
echo "http://localhost:8080" >app/public/api_url - Execute
docker compose up. - Navigate in your browser to
http://localhost:8081/.
Data is persisted until you docker compose rm --volumes.
If you want to use image versions besides the defaults, you can use environment variables
JANUS_AGGREGATOR_IMAGE, JANUS_MIGRATOR_IMAGE, DIVVIUP_API_IMAGE and
DIVVIUP_API_MIGRATOR_IMAGE when invoking docker compose. For example:
DIVVIUP_API_IMAGE=divviup_api:localversion \
JANUS_IMAGE=us-west2-docker.pkg.dev/divviup-artifacts-public/janus/janus_aggregator:0.7.18 \
docker compose updivviup_api:localversion will be pulled from the local Docker repository and
us-west2-docker.pkg.dev/divviup-artifacts-public/janus/janus_aggregator:0.7.18 will be pulled from
us-west2-docker.pkg.dev.
We also provide compose.dev.yaml, which will build divviup-api from local sources. Try:
docker compose -f compose.dev.yaml watchdocker compose will automatically reload containers when you make changes. The JANUS_IMAGE and
JANUS_MIGRATOR_IMAGE variables are honored by compose.dev.yaml.
An account named demo is also automatically created. Two Janus aggregators will be created for
you, and are automatically paired to divviup-api. Their information is:
| Name | Aggregator API address | Aggregator API auth token | Paired with | DAP API outside compose network |
|---|---|---|---|---|
leader |
http://janus_1_aggregator:8080/aggregator-api |
0000 |
Shared, first party | localhost:9001 |
helper |
http://janus_2_aggregator:8080/aggregator-api |
0000 |
demo account |
localhost:9002 |
If using the divviup CLI, consider compiling with the --features admin option. Also, set these
environment variables.
# This token is intentionally blank, but you'll still need to set the variable.
export DIVVIUP_TOKEN=
export DIVVIUP_API_URL=http://localhost:8080
# Set this for any account-specific commands. Since divviup-api in dev mode will automatically
# authenticate you as an admin, it won't know which account to target.
export DIVVIUP_ACCOUNT_ID={account uuid}PostgreSQL is exposed on port 5432 with username and password postgres.
If you need to iterate on database migrations, you may wish to disable the divviup_api_migrate
service by commenting it out in compose.yaml.
- We do not have CSRF protections because we only accept a custom content type for non-idempotent request methods such as POST, and have constrained CORS rules.