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.

Related Journal Entries