Services
Codebase layout
The backend is a Rust Cargo workspace underapi/:
The frontend is a SvelteKit app under
ui/web/.
Authentication model
Two token types are in use:
Guest users get short-lived JWT tokens scoped to a single session.
WebSocket
Real-time updates (transcription progress, recording status, live transcript lines) flow via a single WebSocket connection established when the moderator opens a session. The API subscribes to Redis pub/sub channels and forwards events to connected clients. This replaces the polling approach that was previously used for recording status.Observability
The API and workers export OpenTelemetry traces over OTLP (HTTP/protobuf) to whatever collector is configured inconfig.yml (app.otel_exporter_otlp_endpoint). In production this points to Grafana Alloy. Traces cover HTTP requests, database queries, and worker job processing.