Replaces the email-based negotiation between capstone teams and review panels with a small booking system: panels publish slots, teams request them, the panel votes, and the outcome is visible to everyone instead of buried in an inbox.
- Design:
DESIGN.md(backend) anddocs/superpowers/specs/2026-09-04-frontend-design.md(frontend) - Implementation plans:
docs/superpowers/plans/ - Decisions & FAQ:
DECISIONS.md
docker compose up
- Web: http://localhost:5173
- API: http://localhost:8000 (
/docsfor the OpenAPI UI,/api/healthzfor a health probe) - Postgres: localhost:5432 (
booking/booking)
SMTP_URL is unset by default, so verification/reset/invite mail prints to
the mailer container's stdout — docker compose logs mailer to read a code
during local testing.
uv sync
uv run alembic upgrade head
uv run uvicorn app.main:app --reload
npm --prefix web install
npm --prefix web run dev
uv run pytest -q # backend
npm --prefix web run test # frontend
docker compose exec api uv run python scripts/seed_dev.py
Wipes the domain tables and inserts one active panel, three verified panel
members, three teams of verified students, some slots, and a few bookings in
assorted states. Every seeded account's password is demopass123.