Market District
A private, synchronous 3–5 player negotiation board game for remote game nights, built as an unofficial non-commercial web adaptation inspired by Chinatown.
Overview
Market District is a private, synchronous negotiation board game for 3–5 players. It recreates the social tension of trading properties, money, and shop permits across a shared district while moving hidden information and rule enforcement into a server-authoritative online experience. It is an unofficial, non-commercial project with original branding, writing, board art, and shop art.
Verified evidence
- UAT players
- 5
- Rounds completed
- 6
- Feedback fixes retested
- 4
Problem
Physical negotiation board games are difficult to play across different homes because their hidden information, simultaneous deals, shared board state, and turn transitions do not translate cleanly to a video call.
Target Users
Small groups of friends playing private online board-game sessions
My Role
Solo full-stack developer and game systems designer
Designed the original product identity and responsive game table, implemented the six-round rules engine, built private-room multiplayer and atomic trade flows, and connected the React client to a stateful Cloudflare Worker backend.
My exact contribution
- Modeled the complete six-round game loop as a reusable TypeScript engine covering property selection, trading, placement, income, pause/resume, and final scoring.
- Built password-protected rooms, signed player sessions, reconnectable WebSocket state, per-player hidden views, and host-only room controls on Cloudflare Workers and Durable Objects.
- Designed the dense desktop game table, responsive player drawers, ledger, shop reference, board interactions, trade desk, and final-results experience.
Key Features
- Private password-protected rooms for 3–5 players
- Real-time WebSocket synchronization and reconnectable sessions
- Server-authoritative six-round game engine
- Hidden property and shop hands projected per player
- Atomic money, property, and shop-tile trade offers
- Interactive district board with shop placement and ownership states
- Automatic shop income, ledger history, and final ranking
- Site access gate and host-only pause, resume, and room controls
Challenges & Trade-offs
- Preserving hidden information while keeping every browser synchronized to one authoritative match
- Making multi-asset trades atomic so money, lots, and shop tiles cannot partially transfer
- Translating a dense physical board and reference tables into a readable responsive interface
- Handling reconnects, duplicate commands, stale versions, and host controls without desynchronizing the room
Lessons Learned
- Multiplayer game UI must expose server state clearly without leaking private player information
- A pure rules engine makes complex turn transitions easier to test than logic embedded in React components
- Multiplayer playtesting exposed rule and visual-discoverability gaps that automated coverage could not reveal
- Temporary tunnels are useful for private validation but should not be represented as durable production hosting
Results
Delivered a complete six-round multiplayer flow and validated it through a five-player UAT that reached final scoring. Four feedback-driven interface and rule-clarity fixes were implemented and retested. Shared privately through temporary Cloudflare Quick Tunnels rather than a permanent public deployment.
Proof Artifacts