AmanTahiliani 07e5857760 fix(#73): consume canonical Weekend Context contract and repair navigation
Address the independent review blockers on PR #80 after rebasing onto the
authoritative #72 Weekend Context API.

- Replace the invented frontend WeekendContext with the exact backend contract
  (temporal_state, previous/focus/next meetings, previous_completed/active/next/
  default_analysis sessions with availability). Every valid canonical payload now
  maps to a designed state via a total resolveViewState; a well-formed response
  can never fall through to the limited-data placeholder.
- Make the canonical read the single source of truth: useWeekendContext no longer
  fans out to season/meetings/per-weekend/OpenF1/live queries. Only supplementary
  championship + news reads run, and only once the canonical context resolves.
- Fix the Prepare/analysis flow: /preview is a stable alias that renders the
  preparation surface (PreSessionView) instead of redirecting back to the same
  between-races screen.
- One primary navigation system per breakpoint: the mobile top-bar links are
  hidden so the bottom bar is the sole primary nav, and Admin is moved out of
  every Primary landmark into an operator-utilities toolbar.
- Add Vitest coverage for the contract mapping, every temporal state, loading/
  error/limited surfaces, the no-fanout guarantee, the /preview CTA, and the nav
  hierarchy; add hermetic Playwright journeys (seeded + injected canonical
  payloads), 390/768/1440 overflow checks, and Weekend visual snapshots. Retire
  the stale Command Center specs/snapshots.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-12 18:38:08 -04:00
2026-07-04 07:22:25 -04:00
2026-03-03 00:51:53 -05:00
2026-03-03 00:51:53 -05:00
2026-05-25 10:17:07 -04:00
2026-05-24 20:56:00 -04:00

box-box

"Box, box. Box, box." Every F1 race engineer, ever.

box-box is an unofficial F1 race-weekend command center: live timing, Race Hub analytics, championship context, paddock briefing feeds, and local historical data in one Go + React app, with a preserved Bubble Tea TUI.

Live demo: box-box.amantahiliani.com

box-box Command Center

What It Does

  • Command Center: current race-weekend home with GP identity, live status, schedule, championship leaders, and direct analysis links.
  • Race Hub: session workspace for overview, race story, strategy, laps, weather, race control, and dataset coverage.
  • Live Timing: official F1 SignalR feed bridged through the Go server to the browser via SSE.
  • Championship View: standings, form, teammate context, cumulative points, and a simulator.
  • Paddock Briefing: RSS/Atom news ingestion for a local race-weekend briefing surface.
  • Local-first history: OpenF1 data ingested into a SQLite domain database for fast historical browsing.
  • Terminal Mode: Bubble Tea TUI with standings, calendar, driver profiles, live timing, track map, battles, pit window, and replay.

Quickstart

git clone https://github.com/AmanTahiliani/box-box.git
cd box-box

npm install
npm install --prefix frontend

npm run build --prefix frontend
go run ./cmd/main.go --web
# http://localhost:8080

For a local frontend development loop with seeded data, see docs/getting-started.md.

Project Shape

Area What lives there
cmd/main.go Entry point for TUI, web server, and ingestion CLI
internal/web/ Go REST API, SSE live bridge, SPA serving
internal/live/ Official F1 SignalR client shared by Web and TUI
internal/store/, internal/ingest/, internal/query/ Local SQLite domain database, ingestion, and read models
internal/ui/ Bubble Tea TUI
frontend/ React + Vite + TypeScript web app
tests/ Playwright e2e and visual coverage

The Web UI is local-first and should call the Go APIs under /api/v1/...; it should not read OpenF1 directly.

Documentation

  • Getting Started: install, build, run modes, TUI keybindings, and web routes.
  • Data and Operations: ingestion, environment variables, local files, and live timing notes.
  • Testing: Go, frontend, e2e, and visual regression commands.
  • Architecture Notes: deeper design rationale, data-source decisions, and phase history.

Status

Pre-beta and actively developed. The Web UI is the primary surface; the TUI is preserved and still useful for terminal workflows. Live timing depends on F1 broadcasting timing data, so it is only fully active during live sessions.

License

MIT © Aman Tahiliani

Unofficial project; not associated with Formula 1 or the FIA.

Description
No description provided
Readme 69 MiB
Languages
Go 44.1%
TypeScript 41.3%
CSS 9.4%
JavaScript 2.9%
HTML 1%
Other 1.3%