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.
Three game modes. **Classic**: historic behavior, impostors see "IMPOSTOR", civilians see the secret word. **With Hint**: like Classic, but below "IMPOSTOR" the impostor also sees a "decoy" word similar to the secret one — they know they're the impostor but have something to lean on so they don't blurt out nonsense. **Deception**: impostors do NOT know they are impostors, they receive the decoy directly as if it were their secret word — the bluff is total, even for the liar. If the drawn word has no decoy, the app falls back to Classic automatically.
Two modes of use. Single-device: one phone passes around between players. Multi-device LAN: one player starts their phone as host (Ktor server + WebSocket on the same Wi-Fi, mDNS registration, QR generation), the others scan the QR to join as clients. Each player sees their word directly on their own device: no more passing phones around, no peeking. Discussion, voting and unmasking synced in real time via WebSocket.
Customizable word lists. Three predefined lists (Standard, Difficult, English — editable but not removable) + as many custom lists as you want to create ("Tropical fruit", "Electronic components", "Sci-fi books"...). Each word can have an associated decoy for Deception mode; when creating a new list there's an "Auto-populate 20 words" button that pulls from an offline catalog (Fruit, Animals, Sports, Colors, etc.) by matching the title you gave the list. Templates: save a full configuration (players + game mode + word list + duration) and re-launch it with one tap.
Game history.
Features
- Three game modes: Classic, With Hint, Deception (impostor doesn't know)
- Customizable word lists: 3 predefined (Standard, Difficult, English) + your own custom
- "Decoy" word for each entry, used in With Hint and Deception modes
- Auto-populate 20 words from an offline catalog matched on the list title (Fruit, Animals, Sports, Colors...)
- Reusable templates: save players + mode + list + duration, re-launch with one tap
- 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
- Variable player count (minimum 3, configurable impostors)
- Game history with date, duration, word and impostors
- Material 3 with light/dark/system theme
Configuration
- Game mode: Classic | With Hint | Deception
- Active word list (predefined or custom)
- Connection mode: single-device | multi-device LAN
- WebSocket server port (default 8767)
- Player count and impostor count
- Match duration (per-template override, optional)
- Theme: system | light | dark
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