Who is?
The impostor party game in your pocket
Who is? is a pocket version of the classic impostor party game. Built with Kotlin + Jetpack Compose, Material 3, Room for game persistence and DataStore for preferences. Ktor networking layer (CIO server + WebSocket client) for multi-device.
Two modes of use. Single-device mode: one phone passes around between players in turn, each one sees their word — except for the impostor, who only sees "you're the impostor!". Multi-device LAN mode: one player starts the phone as host (Ktor server + WebSocket on the same Wi-Fi, mDNS registration, QR generation), everyone else scans the QR from their own phone to join as a client. Each player sees their word directly on their own device — no more passing phones around, no peeking, no word ever shown on another phone. Discussion, voting and unmasking synced in real time via WebSocket.
Customizable word categories (create your own or use pre-loaded ones), with/without hints mode, "impostor knows the category" mode, game history.
Features
- Single-device mode: one phone passed around
- Multi-device LAN mode: each player sees the word on their own phone
- Ktor server + WebSocket for game sync
- mDNS server discovery on the local network
- QR code for instant player join
- Anti-peek: the word never transits to other devices
- Pre-loaded word categories + your own
- Variable player count (3–12)
- Mode "with hints" / "no hints"
- Mode "impostor knows the category"
- Game history
- Material 3 with light/dark theme
Configuration
- Mode: single-device | multi-device LAN
- WebSocket server port (default 8767)
- Active category
- Player count
- Impostor mode (sees category or not)
- Word category language
Technical prerequisites
- Android 8.0+ (API 26)
- ~30 MB storage
- For multi-device mode: 2+ devices on the same Wi-Fi
- For multi-device mode: Wi-Fi state, Camera (for client QR scan) permissions
- In single-device: no special permissions required