Skip to content

Repository files navigation

Panel Review Slot Booking

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) and docs/superpowers/specs/2026-09-04-frontend-design.md (frontend)
  • Implementation plans: docs/superpowers/plans/
  • Decisions & FAQ: DECISIONS.md

Run everything

docker compose up

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.

Run the backend alone

uv sync
uv run alembic upgrade head
uv run uvicorn app.main:app --reload

Run the frontend alone (API already running on :8000)

npm --prefix web install
npm --prefix web run dev

Test

uv run pytest -q            # backend
npm --prefix web run test   # frontend

Seed some demo data

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.