Skip to content
← Back

My Vote

Jury voting — full-screen ballot

Experimental
Kotlin Jetpack Compose Material 3 Room Ktor
My Vote

Native Android app for jury voting. Built with Kotlin + Jetpack Compose + Room, with a Ktor networking layer (CIO server + WebSocket client) for multi-device. Jury setup, contestant performance entry, juror-by-juror voting (slider + numeric), full-screen ballot with color interpolation between "min vote" and "max vote" (default red → green), performance summary, final ranking revealed one contestant at a time from worst to best. Navigable session history, resume interrupted sessions, customizable range/colors/palettes.

Two modes of use. Single-device mode: one phone passes around between jurors (simple, no network). Multi-device LAN mode: the jury chair starts their phone as host — Ktor WebSocket server on the same Wi-Fi, mDNS registration, QR code generation. Each juror scans the QR from their own phone to join as a client and vote in real time. No more passing the phone, no peeking at others' votes. The host orchestrates the flow (performance switch, moment of ranking reveal) and collects votes synchronously.

Features

  • Single-device mode: one phone is passed around
  • Multi-device LAN mode: host (Ktor server + WebSocket) + client via QR
  • mDNS server discovery on the local network
  • QR code for instant juror join
  • Real-time vote sync via WebSocket
  • Host-orchestrated ranking reveal
  • Jury setup: juror count + aliases
  • Full-screen ballot with min→max interpolated color
  • Progressive ranking (one contestant at a time, worst → best)
  • Performance summary (total, average, vote list)
  • Navigable session history + resume interrupted sessions
  • Customizable range / colors / palette

Configuration

  • Mode: single-device | multi-device LAN
  • WebSocket server port (default 8765)
  • Session name + juror aliases
  • Vote range (min / max, default 0–10)
  • Min / max vote color (linear interpolation)
  • Palette: Default (Violet) / Sunset / Ocean / Forest
  • Light / dark / system theme

Technical prerequisites

  • Android 8.0+ (API 26)
  • ~50 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
Coming soon