Personal project, 2026
Rummy scoreboard
A scoreboard for Pool Rummy that keeps going with no network.
A mobile-first scoreboard for 101 and 201 Pool Rummy. Players share a link, claim a seat with a PIN, and see scores update in real time. Device tables run entirely in the browser, so a game keeps going with no network at all.

- 2table kinds
- 4digit seat PIN
- 1shared engine
- 0network needed
How it works
Live tables, shared by link.
The API hosts the table. Each player claims a seat with a four-digit PIN, and scores, eliminations and the winner reach every phone over WebSockets.
Device tables, with no network.
Choose “On this device” and the whole game runs in the browser: scoring, reopening a round, the winner screen, CSV export and rematch. The app is a PWA, so it opens offline once it has been loaded once.
A round in one run.
Tap a player and the number pad opens. Saving a new score jumps to the next seat that still owes one, until the round closes. A hardware keyboard drives the pad too.
Under the hood
One engine, two places.
The scoring rules live in a pure package used by both the API and the browser, so a device table resolves a round exactly the way the server would.
A database that needs no setup.
The API runs on embedded PGlite locally and PostgreSQL in production, through the same Drizzle schema.
Details
- Built with
- TypeScript, Fastify, Drizzle, PostgreSQL, WebSockets, Next.js
- When
- 2026
- Links
- Source