
Undercover is a party game where players deduce who holds a different secret word. The web has no great version of it. I built one.
Real-time game state synchronization across multiple players, graceful handling of disconnects, and a UI that feels fast on any device.
FastAPI + Socket.IO
Python FastAPI for game logic and HTTP, Socket.IO for real-time bidirectional events. SQLite persists state across disconnections.
React + Framer Motion
Clean component structure with smooth phase transitions. TailwindCSS for rapid, consistent styling.
ReactViteTypeScriptTailwindCSSFramer MotionPythonFastAPISocket.IOSQLite
88 commits. Online multiplayer and local pass-and-play. Multiple word themes. Persistent state via SQLite.
- Game state machines are a useful mental model for any complex UI with multiple modes.
- WebSocket-based UX requires careful thought about latency and reconnection states.
Next ProjectGangui Network →