145
Play with friends, on your rules.
Most online UNO games lock you into a single ruleset. Custom UNO is a browser-based multiplayer game where the host configures house rules before creating a room. Toggle stacking, UNO call penalties, draw behaviour, deal size, scoring mode, and more, then share a 6-letter room code with 2 to 4 friends.
I wanted a friends-only UNO experience that felt fair, flexible, and effortless. No accounts, no matchmaking, just a room code and the rules we actually play by.
The real challenge was not the UI. It was making sure nobody could peek at the deck, reconnecting after a dropped tab did not ruin the game, and, in v2, making the experience feel genuinely native on mobile instead of forcing players onto a desktop.
Host-configurable house rules
Card stacking
+2 and +4 chaining
Draw until playable
Force play after drawing
UNO call penalties
Single-round or target-score games
Custom starting hand size
Cheat-proof multiplayer
Server-authoritative game engine
Player hands and the deck never leave the server
Every move is validated server-side
Reconnect-friendly
Rejoin your exact seat after disconnecting
Turn timer with automatic pass
Automatic cleanup of abandoned rooms
Built for mobile
Dedicated portrait game table
Swipeable hand with momentum
Mobile-first landing page
Portrait orientation support
Polished experience
Hand-drawn groovy card artwork
Parallax landing page
Animated card movement
Redesigned win screen with staged entrance and confetti
Custom Web Audio sound system
Mute and reduced-motion support
Pure TypeScript game engine shared between client and server
Vitest unit tests for game logic
Standalone Node.js WebSocket server
Zod validation for every incoming action
Next.js 16 + React 19
Zustand for client state management
Tailwind CSS v4 with a custom design system using Vodka Sans and Switzer
Complete mobile responsiveness with dedicated layouts for gameplay, landing page, and victory screens
Redesigned win screen featuring the landing artwork, winner reveal animation, and confetti
Faster cleanup of abandoned rooms
Multiple reconnect and disconnect edge cases fixed
Room state lives entirely in server memory. Players can reconnect to ongoing games, but rooms are intentionally temporary.
No accounts. No matchmaking. No chat. No spectators.
Built for quick, private game nights with friends.
Live Demo: http://uno-bay.vercel.app/
Source Code: https://github.com/Crisiswastaken/Uno-Groovy
Built with