Traitors

convex
game
nextjs
social-deduction
vercel
2026-03-19
Traitors

Traitors is a small web app I put together as a stripped-back, modern take on the kind of social deduction games people often call “imposters” games. The front end is Next.js; the backend is Convex. Convex turned out to be a great fit for this: rooms, player state, and round flow all stay in sync in real time without me wiring up WebSockets or a separate realtime layer. Queries and mutations are plain TypeScript, data lives in one place, and the client subscribes to what it needs so the UI updates as soon as something changes. For a lightweight multiplayer-ish flow, that speed of iteration and the fact that Convex handles consistency and reactivity for you is hard to beat compared to stitching together a database, API, and push logic by hand.

I wanted the UI to feel calm and immediate: dark palette, clear typography, and nothing fighting for attention, so groups could jump in without a tutorial wall.

Performance and flow mattered more than feature count. Creating a room, joining with a code, and moving through a round should feel instant; the app is meant to disappear into the background while people argue, laugh, and lie to each other in the same room.

Deliberately, it’s not trying to be a fully remote experience. You can run it on one phone passed around, or have everyone on their own device, but the heart of it is people together, reading faces, timing, and energy, not grinding through menus alone on a call. That constraint kept the design honest: fewer modes, less configuration, more emphasis on the actual game night.

If you’re hosting friends and want something lightweight that loads fast and stays out of the way, give it a spin.