# Copy to .env (dev) or set these in the systemd unit (prod). # PostgreSQL connection (production). Format: # postgresql+psycopg://USER:PASSWORD@HOST:5432/DBNAME DATABASE_URL=postgresql+psycopg://wpsuite:CHANGE_ME@localhost:5432/wpsuite # If DATABASE_URL is omitted entirely, the API falls back to a local SQLite # file (sqlite:///./wpsuite.db) — handy for trying it out without Postgres. # Only needed for CROSS-ORIGIN local development (comma-separated). In # production the site is same-origin via NGINX, so leave this unset. # CORS_ORIGINS=http://localhost:5500 # ── Authentication ──────────────────────────────────────────────────────────── # Secret used to sign session cookies (JWTs). REQUIRED in production: if unset, # the API falls back to a random per-process key, so logins reset on every # restart and break across multiple gunicorn workers. Generate a strong one: # python -c "import secrets; print(secrets.token_urlsafe(48))" AUTH_SECRET_KEY=CHANGE_ME_run_the_command_above # How long a login lasts before re-authentication (hours). Default 12. # AUTH_SESSION_HOURS=12 # ── Email notifications (optional) ───────────────────────────────────────────── # WP-assignment emails are OFF by default and are turned on from the Admin # console (Notifications & email card), where the SMTP host/port/from-address # live. The one secret that must NOT be stored in the database — the SMTP # password — is read from this environment variable instead. Leave it unset # until you have the SMTP details; the toggle stays effectively off (queued # notifications are marked "skipped", nothing is sent) until both the toggle is # on and SMTP is configured. # SMTP_PASSWORD=your-smtp-app-password