Think Uno is just a simple card game?
Try translating it into clean code: dozens of branching state conditions per turn, erratic action cards, three autonomous bots, and strict animation queues. Without rock-solid architecture, a project like this instantly collapses into spaghetti code and an endless nightmare of if-else statements.
Chaos of Countless Scenarios
Uno is packed with non-linear edge cases: zero-card triggers, stacked penalty chains, and sudden turn reversals. Without a strict event-driven model, game logic quickly spirals into a mess of desynced states.
Finite State Machine & True Randomness
Architected around a deterministic Finite State Machine (FSM) in pure React. Every card draw, penalty, or turn transition is an isolated, strictly-typed atomic state change — guaranteeing zero game freezes.
Instant Play, Zero Backend
100% client-side execution hosted on GitHub Pages. No heavyweight game engines, no latency, and zero server expenses — the game launches instantly and runs at a rock-solid 60 FPS.
Architecture locked in. Let’s deal the cards!
Here is how this rigid state machine feels on the game table…
What’s happening under the table felt?
The bots don’t ping a server and they don’t play randomly. Under the hood lies weighted heuristic evaluation: each bot tracks opponent threats, hoards defensive cards, and picks colors based on its dominant hand. A deliberate micro-delay simulates realistic ‘thinking time’.




Proof that building a responsive web game doesn’t demand bulky runtimes like Unity or heavyweight Canvas engines. Pure React, a robust state machine, and optimized CSS transforms are all it takes to deliver an instant, console-smooth browser experience.
Hundreds of non-linear rules. Zero server overhead.
*Client-side React SPA. Ready to play right in your browser. Best experienced on desktop (optimized for mouse control & wide viewports).