A real-time multiplayer party game where one player is the impostor — and everyone else must figure out who it is.
- One player creates a game and shares the 4-letter room code
- Everyone joins from their phone
- The host picks a secret word — everyone sees it except the impostor
- Players take turns giving one-word clues about the secret word
- The group votes on who they think the impostor is
- If the impostor is caught — the group wins! If not — the impostor wins 🕵️
| Mode | How it works |
|---|---|
| 🌐 Online | Clues, discussion, and voting all happen in the app |
| 🏠 In Person | Players see their roles on their phone, then play verbally face-to-face — the host reveals the impostor at the end |
- Frontend: React 19 · Vite · Tailwind CSS 4 · TypeScript
- Backend: Express 5 · Socket.IO · TypeScript
- Deployment: Docker · Railway
# Install dependencies
npm install
cd client && npm install
cd ../server && npm install
cd ..
# Start both client and server
npm run devClient runs on http://localhost:5173 · Server runs on http://localhost:3001
The app is configured for one-click deployment on Railway:
- Connect your GitHub repo on Railway
- Railway auto-detects the
Dockerfileand deploys - Every push to
maintriggers a redeploy
The Express server serves the built Vite client as static files in production — single service, no CORS headaches.
MIT
