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)
| Section | Surfaces |
|---|---|
| Championship | Events dashboard, Calendar (placeholder) |
| Event | Run Sheets, Run Plan (run + lap modes), Strategy Overview, Session Clock, Weather, Tyres (3 sub-tabs), Setups, Jobs & Issues |
| Analysis | Event Report (pivot grid), Plugin Runner, Lap KPIs (placeholder) |
| Admin | Definitions, 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,kpiProcessorfully wired;runPlan/uiCell/transform/liveHooktyped only) - Server invocation via
POST /plugins/:id/invoke/{math,kpi} - Client server-fallback adapter (default on every platform);
flutter_jsnative adapter scaffolded - Capability declaration schema in
capability_grantstable; enforcement is log-only today - Demo plugin (
race-demo:rolling-avg-rpm@1.0.0) seeded viapnpm seed:demo-plugin— math fn + KPI processor - Plugin Runner UI at
/analysis/plugin-runnerwith 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
| Feature | Status |
|---|---|
| Webhook dispatch (HMAC-signed) | Schema sketched, no route |
| Excel / XML data export | JSON via API only |
| JSON data import surface | API only; edge-ingester for CSV replay |
| Parts / Assemblies / Mileage tracking | Phase 4 |
| Setup Assembly Tree | Roadmap |
| Data Viewer (telemetry plotting) | Phase 6 |
| Main Graph (general data viz) | Phase 6 |
| MoTeC / Pi / Bosch telemetry readers | Phase 6 |
| AI strategy assistants (pit window, stint forecast, what-if) | Phase 3 |
| CGD (Custom Generic Designer) standalone editor | Roadmap (CID ships) |
| KPI registry / scheduler / per-session aggregations | Roadmap |
| Real-time multi-user editing (Automerge) | Realtime service up; client subscription not wired |
| Drag-and-drop board real-time sync | Optimistic local only |
| Edge ingester live adapters | Replay adapter ships; live IMSA/WEC/ELMS adapters roadmap |
| Plugin marketplace + signing | Phase 5 |
| Plugin capability grant UI | Log-only today |
Native flutter_js plugin adapter | Scaffolded |
| Account management website (sign-up, billing, users) | Manual provisioning |
| Auto-update channel | Manual 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_jswiring 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