Docker
Trak uses Docker Compose for local development. The main configuration lives in compose.yml and the top-level Makefile wraps common commands.
Prerequisites
- Docker Desktop (or an alternative like OrbStack on macOS)
make(used by the repo tooling)
Start/stop
make start # start all containers in the background
make start-watch # start in the foreground with logs
make stop # stop containers
make clean # stop containers and remove volumes
First-time setup:
make init
This copies .env.example to .env if needed, starts services, and runs migrations.
Services-only mode
If you want to run Django locally (outside Docker) you can bring up just the backing services:
make start-services
This starts Postgres and Redis only. You are responsible for installing Python/Node and running the app locally.
Containers
Default containers defined in compose.yml:
db(Postgres)redis(Redis)web(Django)vite(asset dev server)celery(worker + beat)frontend(standalone React app)
Some services may be optional depending on how you work (for example the standalone frontend).
Running one-off commands
Use the Makefile helpers or docker compose directly:
make manage ARGS='createsuperuser'
make shell
make dbshell
If you need a shell in the web container:
make ssh
Environment variables
Local development uses .env at the repo root. The template is .env.example.
Keep secrets out of git.