This is the path ./setup.sh automates. Use these steps when you want to see each piece, or when the wizard already ran and you just need to start the services again.

1. Database

From the repo root, with Docker running:
status prints the URL and keys. setup.sh already wrote them into the env files. If you skipped the wizard, copy:
  • API_URL + SERVICE_ROLE_KEYbackend/.env
  • API_URL + ANON_KEYfrontend/.env.local
Leave the stack running. It is the local Postgres, auth, and REST gateway.
Prefer a container-only database? cd frontend && docker compose up -d brings up just the Supabase tier on the same 5432154324 ports.

2. Backend

The process listens on ws://localhost:8000/ws and exposes HTTP health on the same port.

3. Frontend

Open the printed URL (default http://localhost:3000).

After a reboot

You do not need setup.sh again.

Secret hygiene

.gitignore ignores every .env* file except .env.example. Install the local hook once per clone:
The pre-commit hook blocks a real .env or a known secret signature from landing in a commit.