Register
Entered
2026-10-03
First commit
2026-10-03

Scoreboard

App · live scoring · club hall

Every table’s score on one big screen, live, scored from any phone.

A live scoreboard for sports clubs running several tables at once. Four screens in the browser — the big screen, the umpire console, the organiser console and the spectator view — share one Durable Object per event on Cloudflare’s free tier, with nothing to install.

  • TypeScript
  • React
  • Cloudflare Workers
  • Durable Objects
  • WebSocket
  • Vitest
Open live (opens in a new tab)Source (opens in a new tab)
Live3 · X · 2026
Entered
2026-10-03Live
First commit
2026-10-03Scaffold the workspace with the scoring rules and the wire contract
Commits
34on main, read 2026-10-04
Coverage
36%lines run by the scoring rules, the Worker and the screens, read 2026-10-04
House packages
7 of 11installed from npm

What shipped

  1. Each umpire scores their own match from whatever device is at hand, and every match in progress shows up on one big screen across the hall.
  2. One Durable Object per event keeps the ordered scoring events in its own SQLite storage and fans them out over WebSocket.
  3. Points scored while offline are queued and resent on reconnect, and a mistake is undone in one tap.
  4. Scores, the server and timings are all derived from the events, so the organiser can fix a wrong score or move a match to another table live.
  5. Table tennis is the first ruleset; the scoring rules are pluggable so other sports can follow.

History

Straight from the git log, abridged: 6 of 34 commits, newest first.

  1. Deploy the worker from CI on every push to main
  2. Keep lime for live states and give long pairs room on the display
  3. Explain the organiser fields a volunteer could hesitate over
  4. Ask for games to win instead of a best-of format
  5. Name a retirement where its score would read 0-0
  6. Scaffold the workspace with the scoring rules and the wire contractFirst commit

Installs

7 of the 11 house packages, from npm, down to the compiler and linter settings.

Your team, 2026

I am looking for my next job. Write to me, or take the CV: a designed one, and a plain one for applicant tracking systems.