Skip to content
← Back

Who is?

The impostor party game in your pocket

Experimental
Kotlin Jetpack Compose Material 3 Room Ktor WebSocket mDNS QR Templates
Who is?

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
Test track
Test on Play Store
Privacy policy