Local Development
Quick start (Docker Compose)
Section titled “Quick start (Docker Compose)”-
Clone
Terminal window git clone https://github.com/mralaminahamed/tundracd tundra -
Configure
Terminal window cp docs/09-deployment-bundle/dev/.env.example docs/09-deployment-bundle/dev/.env# Edit if any ports clash (Postgres 5432, Valkey 6379, API 7400, Panel 5173) -
Start the stack
Terminal window docker compose -f docs/09-deployment-bundle/dev/docker-compose.yml up -dServices:
postgres— PostgreSQL 18 on :5432valkey— Valkey 8 on :6379mysql— MySQL 8.4 on :3306tundrad— cargo-watch (auto-reloads on Rust changes) on :7400panel-ui— Vite HMR on :5173
-
Wait for tundrad
Terminal window docker compose -f docs/09-deployment-bundle/dev/docker-compose.yml logs -f tundrad# Wait for: tundrad listening addr="0.0.0.0:7400" -
Seed the database
Terminal window docker exec tundra-dev-tundrad /target/debug/tundrad seed run -
Open the panel
Visit
http://localhost:5173— you’ll be redirected to/login.
Default credentials (after seed):owner@example.com/correct horse battery staple
Common tasks
Section titled “Common tasks”# View tundrad logsdocker compose -f docs/09-deployment-bundle/dev/docker-compose.yml logs -f tundrad
# Restart after config changedocker compose -f docs/09-deployment-bundle/dev/docker-compose.yml restart tundrad
# Run a single Rust testdocker exec tundra-dev-tundrad cargo test -p tundrad-api auth::tests::login_rate_limit
# Run panel testscd panel && pnpm test --runpnpm typecheckpnpm lint
# Add a migrationsqlx migrate add <description> # requires DATABASE_URL setPanel-only development
Section titled “Panel-only development”If you only need to work on the panel:
cd panelpnpm installE2E_BASE_URL=http://localhost:7400 pnpm devThe Vite dev server proxies /api/* and /ws/* to localhost:7400.