First Steps
On this page
A guided path from a fresh clone to a running Lerma dashboard, passing checks, and (optionally) a real Cloudflare Access login.
1. Start the local database
cd apps/lerma
docker compose up -d db
This starts postgres:16-alpine for local development.
2. Install dependencies and set up the database
cd apps/lerma
mix setup
mix setup fetches deps, creates and migrates the database, and seeds it.
3. Run the dashboard
cd apps/lerma
mix phx.server
Open http://localhost:4000. Auth is verified against Cloudflare Access, so for
local work either use the tunnel flow below or set SKIP_AUTH=true:
SKIP_AUTH=true mix phx.server4. (Optional) Real Cloudflare Access login
To exercise the real JWT flow, create the local Access resources and start the tunnel — see Local Auth Setup:
cd apps/lerma/iac/tf
tofu workspace new local
tofu workspace select local
(set +a && source ../../.env && set -a && tofu apply)
# then, in another terminal
cd apps/lerma
CLOUDFLARED_TUNNEL_TOKEN=<token> bin/local-tunnel.sh
Visit https://local.lerma.paso4.io.
5. Generate the API docs
Lerma’s HexDocs-format API documentation is generated with ExDoc and served at
/docs:
cd apps/lerma
mix docs # writes priv/static/docs/index.html6. Verify your changes
cd apps/lerma
mix format --check-formatted
mix credo --strict
mix test
# from the repository root
mix license_audit
mix precommit7. Deploy
Deployment is automated through GitHub Actions (staging on develop, production
on release). For the manual runbook — OpenTofu, Ansible, migrations, DNS, and
GitHub secrets — read Deployment.