This application manages queue-based racing sessions for Assetto Corsa across multiple racing rigs. Users can join queues via a web interface, and racing rigs automatically handle player onboarding and session management.
- Control Server Backend (
control_server/backend/): Node.js/TypeScript REST API managing queues and rig states - Web UI (
control_server/frontend/): User-facing interface for queue management and dashboard display - Race Interceptor (
race_interceptor/): Python application running on each racing rig intercepting Content Manager'srace.inifile to inject player names
- User enters their name via the web UI
- Backend assigns user to the racing rig with the shortest queue
- Dashboard displays current queue states (current player + next 3 in queue)
- FREE: Idle, checking for queued players every 1 seconds
- RACING: Active session, not accepting new players
- Rig in
FREEstate polls backend for next player in queue - If player found, displays UI: "Start as
PlayerName" | "Skip"
- On "Start" click: watchdog monitors
race.inifile for changes - When Content Manager writes default player name to
race.ini, watchdog immediately overrides it with queued player name - Rig transitions to
RACINGstate
- Player clicks finish button when done
- Backend removes player from queue
- Rig returns to FREE state and checks for next player
- Automatic load balancing: Players assigned to shortest queue
- File-based name injection: Intercepts Content Manager's
race.iniwrites - Real-time dashboard: Displays current and upcoming players across all rigs