
Chess Platform
Multiplayer chess with sub-100ms move sync, ranked matchmaking, and engine-backed analysis. Built for players who take the game seriously.
A full-stack chess platform engineered around low-latency real-time play. WebSockets handle live move synchronization between players, Redis manages active game state and matchmaking queues, and chess.js enforces strict server-side move validation so the game state is always authoritative. The UI is intentionally minimal — no distractions, just the board, the clock, and the analysis panel. Deployed via Docker with a Turborepo monorepo structure to keep the frontend, server, and shared logic cleanly separated.
Why I built this
Chess is a perfect stress test for real-time systems — every move has to arrive in order, at low latency, with no room for ambiguity. I wanted to build something where performance wasn't an afterthought but the entire design constraint.
Use case
Players join ranked queues, play live multiplayer games with move timers, and review completed games with engine-backed annotations. The platform targets serious players who want speed and clarity over gamified noise.
What I learned
Server authority is everything in multiplayer. Trusting the client for move validation feels fine until someone sends an illegal move. Centralizing game logic on the server and treating the client as a pure view eliminated an entire class of bugs.
Where I got stuck
Keeping game state synchronized across unreliable connections was the hardest problem. A player dropping mid-game, then reconnecting, needs to see the exact board state without the server replaying the entire event log. Getting the reconnect reconciliation right took several redesigns.