spencermcw.com
[ << ] back to work
case file 04 / 14 · 2026

Tableforge

Board and card games in the browser, for one player or a full table.

live Live on Railway; the source is private checked 2026-10-20 [1]

visit site (opens in a new tab)

A multiplayer board-game platform: 17 games, from Hearts and Euchre to Catan, Carcassonne and Terraforming Mars, played in the browser on a phone or a desktop, with bots for any empty chair, spectating, and a party mode for a whole room.

what it does

  • A lobby of every game: quick match (a free chair, or a fresh table with bots in the others), a browse of active tables, and a create page with each game's own options. [2]
  • Bots can take any chair, and anyone can watch a table as a spectator. [2]
  • Retort Report, a party game for 3–8 players plus an audience: a presenter screen styled as a mock news broadcast, phones as the controllers, and a join by room code or QR. [3]
  • A profile with a nickname, a sign-in link that carries the same account to a phone, wallets and awards; Blackjack keeps a persistent chip economy. [2]
  • Mobile is a first-class target: the same tables play on a phone and a desktop. [2]
What it is
Multiplayer game platform: one TypeScript rules engine for the browser and the server
Stack
engine TypeScript · its own rules engine [2]
client PixiJS 8 · Preact · Vite · Tailwind 4 · daisyUI [5]
server Node · WebSockets (ws) · isolated-vm · SQLite (node:sqlite) · zod · esbuild · OpenID Connect sign-in [5]
tests Vitest · Playwright [5]
Tags
  • TypeScript
  • PixiJS
  • Multiplayer
  • Game
  1. One implementation of each game's rules runs identically in the browser (single player) and on the server (multiplayer). [2]

  2. On the server every game runs in an isolate with a realm of its own per match; in the browser each table's scene runs in a sandboxed iframe on a separate game origin and talks to the page through one checked message bridge. [4]

  3. The engine sends each player only the view that player may see; a spectator gets the view with all private information removed. [4]

  4. A game's bot is a pure function of its arguments, and a conformance suite plays every game's bot through two hosts and requires the same moves. [4]

  5. The 17: Andromeda's Edge, Blackjack, Carcassonne, Cascadia, Catan, Euchre, Go Fish, Hearts, Mancala, Memory, Quizboard, Retort Report, SETI, Solitaire, Spoons, Terraforming Mars, and a sandbox that shows every piece the platform can draw. [3]

$ git log --reverse
  1. First commit: the monorepo, then Klondike Solitaire's rules and scene [6]
  2. Party games designed; the first is Retort Report [6]
  3. Cascadia and Terraforming Mars merged, the sixteenth and seventeenth [6]

Every marked line above points at one of these: repositories and their docs, registries, live sites and screenshots. Nothing is inferred past what they show.

  1. [1] The Railway deployment (answers 200) 2026-10-20
  2. [2] Tableforge README.md (private repository) 2026-10-20
  3. [3] docs/GAMES.md: what each game is and is missing 2026-10-20
  4. [4] docs/ARCHITECTURE.md 2026-10-20
  5. [5] The workspace's package.json files 2026-10-20
  6. [6] Commit history, master at fcbb7cc 2026-10-20