← All projects

Board-Game Companion Web App

Zero-dependency Node.js app that runs money, upgrade cards and rule enforcement for a real-life property board game, with players joining from their phones by QR code.

Client
Personal R&D
Year
2026
Category
Full-Stack
Stack
  • Node.js
  • Server-Sent Events
  • JavaScript
  • HTML
  • CSS

The problem

A house-rules version of a classic property board game adds an upgrade draft every round. Tracking paper money, 324 upgrade cards and their effects by hand led to mistakes and arguments. The board stays physical; the bookkeeping needed to move to phones.

What I built

  • Host and player views: the host creates a room and shows a QR code. Players scan it, type a name and join over the local Wi-Fi. Rejoining with the same name restores their state.
  • Real-time sync: Server-Sent Events push every change to all phones, with keep-alive pings and a resync when a locked phone wakes up.
  • Upgrade draft: each round every player draws 3 cards and keeps 1, with a 4-slot limit, rarity tiers unlocked by round, and swap and discard rules.
  • Effect engine: 90 cards resolve automatically, including stealing money or cards, table-wide effects, shields, bankruptcy rules and round-end income. A rules table is checked at startup, so a typo in a card name fails fast.
  • In-app money: pay, request and approve transfers, a bank queue the host approves, and bank-style notifications with synthesized sounds.
  • Persistence and tests: game state saved to disk so a restart loses nothing, a QR generator with its own test, and HTTP smoke tests for the game flow and card effects.

Details

The server uses only Node’s standard library, so it runs with node server.js and no install step. Effects that depend on the physical board, like property and movement, are left to the players on purpose.