Local Development
Target reader: developers running the Alpha stack locally.
Docker Compose starts PostgreSQL, MinIO, both Go APIs, the Developer Console, and the docs site for local E2E.
Account mail is captured locally by Mailpit at http://localhost:8025 (SMTP port 1025); no external relay is configured. Seed users are explicitly verified synthetic fixtures. Real new registrations follow email verification. Old populated Alpha datasets are rejected before provisioning; use a fresh local dataset. Existing .env files are not overwritten.
Minimal example
cd ../echo-nebula-infra
cp .env.example .env
./scripts/dev-apps-up.sh
./scripts/wait-for-services.sh
./scripts/e2e-all.sh
./scripts/dev-down.sh
dev-apps-up.sh is the full-stack entry point: it starts PostgreSQL and MinIO, initializes the private bucket, applies unapplied migrations, installs Console/Docs dependencies in their containers, and starts both APIs plus the web apps. Use dev-up.sh only for dependency-only work. wait-for-services.sh and e2e-all.sh require both API readiness components to be ready; /healthz alone is not acceptance evidence.
Common mistakes
- Do not run E2E before the services are healthy.
- Do not use
/healthzas proof that PostgreSQL or object storage is usable; check/readyz. - Do not reuse production object storage or database credentials locally.
- Do not treat a passing shell check as browser proof for the console.
Next step
Read the full Local Docker Compose guide.