UNO
ReactTypeScriptSupabase RealtimeMultiplayer
A multiplayer UNO card game ported from a standalone Express/MongoDB project to work as a static site with Supabase Realtime.
What I learned
- Porting a server-side game engine to pure client-side functions
- Immutable state management for real-time multiplayer synchronization
- Supabase Realtime for game state broadcasting
- Supporting N-player rooms (2-4 players) with a flexible lobby system
Technical details
The UNO game engine runs entirely in the browser as pure functions — each action (throw card, draw, announce UNO) takes the current state and returns a new state. This state is stored in Supabase as JSON and broadcast to all players via Realtime subscriptions.
Features include all standard UNO rules: number matching, skip, reverse, draw 2, wild, wild draw 4, UNO announcement, and challenge mechanics.