Skip to main content

v0.1.0 — Initial Release

The seeded foundation release of Race Platform. This is what's on the floor as of mid-2026: 16 feature surfaces, a complete customisation layer (definitions / custom views / custom columns), and a working plugin host with end-to-end demo.

What shipped

Foundation

  • pnpm monorepo with five apps (client / api / realtime / edge-ingester / strategy-engine) + three packages (shared-types / math-engine / plugin-sdk)
  • Docker stack on ports 6160–6165 (Postgres / API / Realtime / Redis / MinIO / MinIO console)
  • Drizzle ORM with three migrations applied
  • Hono API with 22 route modules
  • Auth via JWT + bcrypt, multi-tenant via accountId
  • Smoke test that exercises 6 end-to-end HTTP paths

Flutter client (16 features, 112 Dart files)

SectionSurfaces
ChampionshipEvents dashboard, Calendar (placeholder)
EventRun Sheets, Run Plan (run + lap modes), Strategy Overview, Session Clock, Weather, Tyres (3 sub-tabs), Setups, Jobs & Issues
AnalysisEvent Report (pivot grid), Plugin Runner, Lap KPIs (placeholder)
AdminDefinitions, Custom Views, Custom Columns, Tracks, Cars, Drivers, Lap Markers

Customisation layer (HH-DM-class)

  • Definitions — 4 entity types of seeded examples, full CRUD route, Zod-validated spec, 18 entity types supported, parameters / math parameters / collections / part parameters / attached-file parameters
  • CID renderer + designer — Section / Block / Line / Cell tree with style overrides, math-expression cells, parameter autocomplete
  • Custom Views — three view types (cid, single-table, multi-session-table); live shell re-registration on save
  • Custom Columns — 9 entity types, full editor (consumers not yet wired into existing grids)
  • Math engine — pure TypeScript Pratt parser + tree-walking evaluator, 30+ functions, 24 dimensions, 113/113 tests pass; Dart port with parity test corpus

Plugin host

  • 6 plugin interfaces typed in @race/plugin-sdk (math, kpiProcessor fully wired; runPlan / uiCell / transform / liveHook typed only)
  • Server invocation via POST /plugins/:id/invoke/{math,kpi}
  • Client server-fallback adapter (default on every platform); flutter_js native adapter scaffolded
  • Capability declaration schema in capability_grants table; enforcement is log-only today
  • Demo plugin (race-demo:rolling-avg-rpm@1.0.0) seeded via pnpm seed:demo-plugin — math fn + KPI processor
  • Plugin Runner UI at /analysis/plugin-runner with math
    • KPI invocation cards and last-10 history
  • 9/9 SDK tests + parity test ensure QuickJS ↔ V8 outputs are bit-identical

What's stubbed or placeholder

Things wired into the shell but rendering placeholder content:

  • Lap KPIs screen (/analysis/lap-kpis) — see Lap KPIs for the planned scope
  • Calendar screen (/championships/calendar)
  • Championships admin — CRUD via API only, no admin grid
  • Events admin — CRUD via API only, no admin grid
  • Parameter Groups customisation surface

What's HH-DM-only that we don't have yet

FeatureStatus
Webhook dispatch (HMAC-signed)Schema sketched, no route
Excel / XML data exportJSON via API only
JSON data import surfaceAPI only; edge-ingester for CSV replay
Parts / Assemblies / Mileage trackingPhase 4
Setup Assembly TreeRoadmap
Data Viewer (telemetry plotting)Phase 6
Main Graph (general data viz)Phase 6
MoTeC / Pi / Bosch telemetry readersPhase 6
AI strategy assistants (pit window, stint forecast, what-if)Phase 3
CGD (Custom Generic Designer) standalone editorRoadmap (CID ships)
KPI registry / scheduler / per-session aggregationsRoadmap
Real-time multi-user editing (Automerge)Realtime service up; client subscription not wired
Drag-and-drop board real-time syncOptimistic local only
Edge ingester live adaptersReplay adapter ships; live IMSA/WEC/ELMS adapters roadmap
Plugin marketplace + signingPhase 5
Plugin capability grant UILog-only today
Native flutter_js plugin adapterScaffolded
Account management website (sign-up, billing, users)Manual provisioning
Auto-update channelManual builds

Acceptance test status

The local-Docker MVP acceptance test (8 checks):

  • 1. docker-compose brings up all services healthy
  • 2. Migrations apply; seed creates IMSA-like sample event
  • 3. Flutter web logs in with seeded user, sees the event
  • 4. (in progress) Multi-user view — needs a second authenticated session
  • 5. Editing a lap on desktop appears in web within 500 ms — needs WebSocket subscription wire-up
  • 6. Edge ingester replay → auto-populate within 1 s
  • 7. Sample plugin runs identically on client + server (server side works; client flutter_js wiring pending)
  • 8. Board drag-and-drop replicates within 100 ms

Numbers

  • 112 Dart files in apps/client/lib/, 13 feature directories, 7 admin sub-features
  • 22 Hono route modules
  • 3 TS packages (shared-types, math-engine, plugin-sdk)
  • 4 seeded definitions, 2 seeded custom views, 2 seeded column profiles, 1 seeded plugin
  • 3 Drizzle migrations
  • 113/113 math engine tests, 9/9 plugin SDK tests, 10/10 realtime tests