How formulafactorchampionship/formula-factor works
FFC is a sim-racing championship web app with an admin panel and live timing. The main workflow is a visitor or administrator using the static SPA; administrators can use server APIs to review archived sessions and account audits, while race results are prepared as import drafts. Live timing is served through a Node server or a Cloud Run relay, with stored records also published for the static site. README documents the visual modules and deployment split; some SPA and server behavior is unsampled, so those links are limited to documented relationships.
Main entry points: server/server.js Admin API · script.js Championship SPA · relay/server.js Cloud Run Relay · race-results-import.js Race Importer
Components 15
Championship Web
- Championship SPA
script.js - Page Shell
index.html
Administration
- Admin API
server/server.js - Environment Loader
server/envLoader.js - Account Audit
server/emailAuditService.js - Race Importer
server/race-results-import.js - Firestore Rules
firestore.rules - Race Import Bundle
race_import.json
Live Timing
- Timing Store
live-timing-store.js - Game Timing Feed
live-timing-upstream.js - Cloud Run Relay
relay/server.js - Published Records
live_timing_records.json
Visual Effects
- WebGL Effects
components
Other components
- Visitor / Admin
- Firebase / Firestore
Connections 18
- Visitor / Admin → Championship SPA: uses
README.md - Page Shell → Championship SPA: hosts
README.md - Championship SPA → WebGL Effects: loads lazily
README.md - Championship SPA → Admin API: uses admin API
README.md - Admin API → Environment Loader: loads first
server/server.js - Admin API → Account Audit: calls audit
server/server.js - Admin API → Race Importer: requests drafts
server/server.js - Admin API → Timing Store: uses records
server/server.js - Admin API → Game Timing Feed: uses feed
server/server.js - Account Audit → Firebase / Firestore: reads / deletes
server/emailAuditService.js - Firestore Rules → Firebase / Firestore: secures
README.md - Race Importer → Timing Store: uses helpers
server/race-results-import.js - Cloud Run Relay → Timing Store: serves records
relay/server.js - Cloud Run Relay → Game Timing Feed: relays feed
relay/server.js - Cloud Run Relay → Race Importer: serves archived imports
relay/server.js - Cloud Run Relay → Championship SPA: streams SSE
README.md - Timing Store → Published Records: publishes records
- Race Importer → Race Import Bundle: publishes drafts