USC Formula SAE Dashboard
Real-time telemetry for the USC Formula SAE racecar, hardware to software. Live sensor data comes off the car's MoTeC data-acquisition system over its telemetry radio; a configuration layer pushes settings back the other way. Ten subteams edit role-scoped configs; a watcher injects those values into MoTeC .ldx files, verifies the injection after every MoTeC rewrite, and streams the live sensor feed to the dashboard.
What it does
- Role-scoped forms with a full audit trail. Ten subteam roles — DAQ, chief, suspension, aero, powertrain, and the rest. YAML-driven schemas, current values prefilled, every field change logged with user, timestamp, and diff.
- LDX inject-and-verify loop. The backend watches the configured directory, injects current form values into new
.ldxfiles, then re-checks tracked files every 60 seconds. When MoTeC rewrites an.ldxand strips injected values, the watcher restores them automatically. Manual reinjection is available from the injection history. - Live telemetry off the car. Sensor data arrives off the MoTeC DAQ through the Digi Bee SX serial bridge — the car's telemetry radio — with a passive UDP broadcast listener and a simulated generator as fallbacks, streamed over WebSocket. The frontend renders line, gauge, and numeric widgets with auto-reconnect on dropout.
Stack
- Backend — FastAPI, SQLModel, SQLite, JWT auth, WebSocket telemetry, LDX file watcher + verification task.
- Frontend — Next.js 14 App Router, React 18, Tailwind, shadcn/ui, SWR, Recharts.
- Deployment — Docker Compose, three services behind a reverse proxy, UDP listener exposed on 50000.