mirror of
https://github.com/AmanTahiliani/box-box.git
synced 2026-08-07 11:54:59 -04:00
36 lines
1.9 KiB
Markdown
36 lines
1.9 KiB
Markdown
|
|
# Lens overlay: Architect
|
||
|
|
|
||
|
|
Apply this **on top of** the base grill (`grill.md`). Bias every question toward
|
||
|
|
technical soundness and fit with the existing box-box architecture.
|
||
|
|
|
||
|
|
## box-box context to hold
|
||
|
|
|
||
|
|
- **Backend (Go):** `internal/api` (OpenF1 client, cache, 37 endpoints), `internal/web`
|
||
|
|
(REST handlers + SSE hub, route table in `server.go`), `internal/store` (domain
|
||
|
|
SQLite), `internal/query` (read models over the domain DB), `internal/ingest`,
|
||
|
|
`internal/live` (SignalR).
|
||
|
|
- **Frontend (React+Vite+TS):** TanStack Router/Query, `src/api.ts` (typed fetchers),
|
||
|
|
`src/types.ts` (payload mirrors), `src/lib` (client helpers), `src/pages`,
|
||
|
|
`src/components` (incl. `components/live`).
|
||
|
|
- **Patterns to respect** (see CLAUDE.md "How To Extend"): ServeMux longest-prefix
|
||
|
|
route ordering in `server.go`, cache TTL tiers, `?source=openf1|local|auto`
|
||
|
|
resolution, two-phase standings load, lazy tab loads, stale-data fallback banner.
|
||
|
|
|
||
|
|
## Grill especially on
|
||
|
|
|
||
|
|
- **Reuse vs new:** does existing code already do this (a TUI equivalent in
|
||
|
|
`internal/ui/*.go`, a query model, an `api.ts` fetcher)? Port vs rebuild.
|
||
|
|
- **Data flow & source:** OpenF1 live vs domain DB vs cache; payload size; rate
|
||
|
|
limits; how `?source` is handled.
|
||
|
|
- **Seams:** which files/modules change; new endpoint (mind registration order!) vs
|
||
|
|
extend an existing one; new component vs extend; where shared logic lives
|
||
|
|
(`frontend/src/lib/*`).
|
||
|
|
- **Testability:** how does this land in `go test` / `vitest` / hermetic Playwright?
|
||
|
|
What seam makes it testable without live OpenF1?
|
||
|
|
- **Risk:** domain-DB migrations, perf on large sessions, backward compat, and
|
||
|
|
failure / stale-data behavior.
|
||
|
|
|
||
|
|
Keep questions concrete and decision-shaped — e.g. *"port the GPS normalization from
|
||
|
|
`internal/ui/trackmap.go`, or recompute in a shared `frontend/src/lib/trackmap.ts` so
|
||
|
|
it's unit-testable?"* — each with your recommendation.
|