TypeScript
React
Vite
Express
WebSockets
PostgreSQL
Vitest
npm Workspaces
A co-op craps game where a deck-builder chip/joker layer sits on top of a fully
casino-faithful table. The whole game is built on a pure, deterministic TypeScript
reducer over JSON-serializable state — the same property that makes online co-op,
save/resume, replay, and deterministic tests one problem solved once.
▸
Pure Deterministic Engine: Seeded-RNG reducer with no I/O, no clocks — JSON round-trips losslessly by contract
▸
The Purist Test: Strip every chip and the table is faithful real-money craps — enforced mechanically by the type system, not convention
▸
Full Casino Bet Catalog: Every bet at real-casino payouts (pass/odds, come, place, buy/lay, props, hops, fire, ATS, repeaters)
▸
Roguelike Layer: Runs, antes, rarity-weighted chip shop, bet leveling, shooter rotation — the Balatro skin on top of the math
▸
Authoritative Online Architecture: Server-run reducer, per-bettor token auth, live lobby join + spectating over HTTP + WS
▸
1000+ Tests: Deep engine coverage of casino payouts, determinism, and the chip contract, plus a real-browser Playwright smoke
Technical Highlights:
A strict one-way layered monorepo (pure engine → authoritative server → React client).
The chip contract is fenced at all three seams — a compile-time discriminated union plus
two runtime guards — so the deck-builder chaos can never break the casino math.