Projects
Chess Platform

Chess Platform

Live

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.

Stack used

TypeScriptTypeScriptNext.jsNext.jsWebSocketsWebSocketsRedisRedischess.jsTailwind CSSTailwind CSSTurborepoTurborepoDockerDocker