Work

box-box

An F1 race-weekend command center in Go and React, built by the factory and served from my own hardware.

Role
Sole engineer
Stack
Go · React · SQLite · SSE · Bubble Tea
Status
Shipped

A race-weekend command center that has to work when nothing is live.

box-box is an F1 race-weekend command center in Go and React. Live timing is bridged from the official SignalR feed to the browser. A local SQLite history works when nothing is live, because for most of the year, nothing is.

The box-box command center between race weekends. A banner reads After Hungarian Grand Prix with the top three finishers, a countdown of eleven days to the Dutch Grand Prix at Zandvoort, a scrollable season calendar marking the current round, a paddock briefing feed of recent articles, and championship leaders for drivers and constructors with points trend lines.
Between weekends, captured live from the deployment on my own hardware. The feed is dark and the page is still the most useful surface of the season.

That second half is not a fallback bolted on for demos. The calendar is empty more often than it is full. If the product only makes sense during a session, it is a toy on race weekends and a blank page the rest of the time. History, standings, and the shape of a weekend have to be useful when the feed is quiet.

Official feed in, browser out, without pretending the off-season is a race.

During a session the interesting problem is bridging: take the official SignalR timing feed and get it to the browser in a form a React client can follow, with the Go side owning the connection and the awkward parts of the protocol. Server-sent events carry the live state forward once it is inside the app. The UI is a command center, not a highlight reel. You want the state of the weekend in one place, updating while the session is on.

When the feed is dark, the same surface keeps serving from SQLite. That is the normal case for most of the year, and it is the case the design has to respect. Standings, weekend shape, and history have to remain readable when there is nothing to stream. A Bubble Tea terminal surface sits alongside the web client for the same reason the factory keeps more than one harness: different surfaces for different moments, same underlying work.

The completed-session data is not just an archive. Race Story turns position changes and race-control messages into a chaptered replay, then lets the reader scrub the field as the race unfolds.

A third client for the same race store

Seventy laps, detected as five chapters.

An animated position replay for all twenty-two drivers at the 2026 Hungarian Grand Prix. Five story chapters were detected from race-control messages and position changes.

01 / 05L1
GORace start: Lap 1 shuffle at the front
POSITION EVOLUTION70 LAPS

Swipe to follow the race timeline

One store, three surfacesThe figure is part of the architecture it describes.
  1. 01 / ingestOfficial SignalR feed
  2. 02 / shapeGo chapter detector
  3. 03 / persistSQLite race history
  4. 04 / renderReact, Bubble Tea, Astro

536 position samples and 80 race-control messages, reduced to the narrative above at build time.

The same race store feeds the React command center, a Bubble Tea terminal, and now this portfolio. The replay is rendered from box-box data, not captured from it.

The second interface is not a smaller web page. The Bubble Tea client renders the same race snapshot as a keyboard-driven terminal replay. One lap control below drives both surfaces so their agreement is visible rather than asserted.

One state, two renderers

Move one lap. Watch both clients agree.

Lap01/ 70
L1L70
WEB / REACTField order
snapshot synced
2NOR·
3VER·
6ANT·
5LEC·
4HAM·
7HAD·
20RUS·
8LAW·
10HUL·
9LIN·
13BOR·
11GAS·
19STR·
15ALO·
14COL·
12OCO·
18ALB·
17SAI·
16BEA·
22PER·
21BOT·
1PIA·
TUI / BUBBLE TEARace replay
box-box replay --session 11342
01Lap snapshot{ positions, timing, pits }
02AReact rendererDOM field order
02BBubble Tea rendererLip Gloss terminal
One normalized lap snapshot, rendered twice. The web field and Bubble Tea terminal never synchronize with each other; they agree because both consume the same race model.

Public proof that the factory works.

box-box is the app the software factory was built to ship. Issue to groomed spec, isolated worktree, build gate, review by a different harness, human merge. The pull requests that make up the repo are the evidence trail for that pipeline, not a separate story about racing.

It also forces the harness questions that a greenfield toy project can dodge. On box-box I route partly to load-balance across subscription windows so that running out on one provider never stops the work. That is not a model-quality decision at all, and it is most of why the multi-harness setup exists. The dated routing notes on /agents are written against this repo as much as against anything else.

Deployed on my own hardware.

box-box is live at box-box.amantahiliani.com, served from the homelab: a Raspberry Pi for ingress and a mini PC for compute, reachable over Tailscale, nothing exposed that does not need to be. The portfolio’s proof strip can point at a real deployment on hardware I operate, not a slide about “production.”

If you want the systems argument, read the factory. If you want the product that survived that argument, this is it.