ClusterClear Duel was built as a modern 1v1 puzzle product rather than a simple game prototype. The experience combines low-friction entry, fast invite-based matchmaking, responsive gameplay, and a backend architecture designed to keep every move fair, reproducible, and recoverable.
ClusterClear Duel is cluster-clearing gone multiplayer: instant duel creation, a shared 10×10 board, live chat, seamless reconnects, and match replay.
Every match starts from a persisted seed and plays out on a shared deterministic board.
The server controls turn timing and can automatically issue a `PASS` when a player times out.
Completed matches can be reconstructed from the seed plus the ordered event log.
Includes chat, friends, match history, profile management, and achievements.
ClusterClear Duel is a multiplayer puzzle experience for players who want quick head-to-head sessions without the friction usually attached to competitive games. The product balances sharp UI, immediate onboarding, and a backend model strong enough to protect turn order, move validity, scoring, persistence, and replay accuracy.
The core challenge was not just building a puzzle board. It was turning a deterministic ruleset into a believable multiplayer product. That required solving for realtime synchronization, validation, reconnect safety, replayability, authentication flexibility, and enough UX polish to make the game feel intentional instead of experimental.
I approached the project as both a systems problem and a product design problem. The solution pairs a React-based interface and Phaser-powered board rendering with a NestJS + Socket.IO backend, PostgreSQL persistence, Redis-backed matchmaking support, and a shared engine used across live gameplay, validation, and replay.
Solo Full-stack Product Engineer
I started by defining the rules in a deterministic way: a shared 10×10 board, cluster-based selection, turn alternation, gravity, column shifting, score calculation, and a clear end condition. This created a stable gameplay contract that could be reused everywhere else in the stack.
Instead of duplicating logic between frontend and backend, I centralized the rules inside a shared game-engine package. That decision became one of the strongest technical advantages of the project: the same logic drives validation, local board interaction, replay generation, and testing expectations.
The next step was building the multiplayer backbone. I used NestJS and Socket.IO to handle match join, move submission, chat, presence, forfeit, leave, and match-end events. PostgreSQL stores match state and event history, while Redis supports queue and realtime coordination. The backend remains the source of truth, so the client renders the game but does not own it.
With the core systems stable, I focused on product polish: invite flows, guest access, Google OAuth, friends, profile management, replay controls, better landing UX, modal history views, outcome messaging, and responsive navigation. The final layer was quality assurance and deployment: typed contracts, unit-tested shared logic, Playwright coverage, and a CI/CD path to production.
Product Thinking
The experience was shaped around low-friction entry, clear game-state communication, and features that increase replay value.
Systems Reliability
The backend enforces rules, stores ordered events, preserves state across refreshes, and supports replay without compromising trust.
Full-Stack Range
The project spans UI design, frontend engineering, realtime infrastructure, backend architecture, testing, and production deployment.