Configuration
Configuration is driven by environment variables (prefix SWIM_), optionally
from a .env file. The active profile (dev / test / prod / desktop)
controls a few safety defaults (e.g. whether the auth cookie is HTTPS-only).
Essentials
Section titled “Essentials”| Variable | What it does |
|---|---|
SWIM_AUTH_SECRET |
JWT signing secret. Required — startup fails if unset. |
SWIM_ENV |
Profile: dev | test | prod | desktop. |
SWIM_PUBLIC_BASE_URL |
Absolute origin used to build links in emails (invite links). |
Database
Section titled “Database”The default is a single SQLite file — zero config. To use Postgres, point the app at it; Postgres is the answer to SQLite’s single-writer limit under a busy, multi-meet, realtime workload.
| Variable | What it does |
|---|---|
SWIM_DB_TARGET |
sqlite (default) | neon | local-pg. |
SWIM_SQLITE_URL |
SQLite file URL. |
SWIM_DB_URL |
Explicit SQLAlchemy URL — overrides the target toggle (prod/CI). |
The schema is portable across SQLite and Postgres; migrations run on startup.
Email and other settings
Section titled “Email and other settings”SMTP and the recipient allowlist have their own page — see
Email setup. The full, authoritative list of
settings lives in the backend’s config.py.