Skip to content

Configuration

All configuration is via environment variables. For local development, docker-compose.yml sets sensible defaults.

VariableDescriptionExample
SECRET_KEYDjango secret key. Use a long random string.$(python -c "import secrets; print(secrets.token_urlsafe(50))")
DATABASE_URLPostgreSQL connection string.postgres://trueppm:password@db:5432/trueppm
REDIS_URLConnection string for the Celery broker / Channels layer. TruePPM ships with Valkey (BSD-licensed Redis fork, wire-compatible); the redis:// scheme works against either.redis://valkey:6379
DJANGO_SETTINGS_MODULESettings module to load.trueppm_api.settings.prod
ALLOWED_HOSTSComma-separated list of allowed hostnames.trueppm.example.com
VariableDefault
SECRET_KEYdev-secret-key-change-in-prod
DATABASE_URLpostgres://trueppm:trueppm@db:5432/trueppm
REDIS_URLredis://valkey:6379
DJANGO_SETTINGS_MODULEtrueppm_api.settings.dev
ALLOWED_HOSTS*
VariableDefaultDescription
TRUEPPM_EDITIONcommunityEdition discriminator read by /api/v1/edition/. Set to enterprise in the enterprise Helm chart so the React shell can make the post-login redirect decision without importing enterprise code (ADR-0029). Never set this in an OSS deployment.
HISTORY_RETENTION_DAYS90How many days of object-change history to keep. Records older than this are purged nightly by Celery beat. Set to 0 to disable automatic purging entirely (enterprise unlimited-retention tier does this).
TASK_RUN_RETENTION_DAYS30How many days of completed/failed/cancelled Celery task-run records to keep before the nightly purge. Set to 0 to disable.
VITE_FEATURE_FLAGS{}Build-time JSON blob of feature flag overrides for the React frontend, e.g. '{"schedule_build_mode_v1":true}'. Set in packages/web/.env or .env.production before npm run build. Per-user localStorage overrides win over this default at runtime.

After starting the stack and running migrations:

Terminal window
docker compose exec api python manage.py migrate
docker compose exec api python manage.py createsuperuser

The superuser can then authenticate via the API and create projects. When a user creates a project, they automatically become its Owner.