SMStefan MihovSystems & AutomationDesign portfolio ↗

Realtime multiplayer · Consumer product

A social game built as a synchronized multi-device state machine.

Listcheta translates a physical word-association party game into a phone-first product where 4–10 people join the same room, submit or draw prompts, play timed team rounds and carry their identity and statistics across future games.

Players4–10Teams2–5Modes1–3 rounds · 6 categoriesLanguagesEnglish / Bulgarian

01 · Problem

The hard part was not digitizing the cards. It was coordinating the room.

Every phone needs enough shared state to stay in sync, but not every phone should see the secret prompt. Turns must rotate correctly, timers must survive device differences, round rules change, players can join as guests or profiles, and the app has to stay invisible enough for the social game to remain the focus.

SYNCHRONIZATION

Many devices, one game

Room membership, teams, phase, scores and turn state have to stay coherent across every joined phone.

PRIVATE STATE

Not everyone can see everything

The current secret prompt belongs to the master device while public room state remains safe for every player.

SOCIAL UX

Software cannot interrupt play

Joining, setup, handoffs and round changes need to be fast enough that people keep looking at each other, not configuring the app.

02 · State machine

The game is a sequence of controlled transitions.

The backend encodes the legal phases and actions: lobby setup, alternating team turns, a 60-second active turn, a final-guess state, between-round transitions and a finished game that is persisted into history.

CURRENT ROOM PHASE

What the state machine enforces

01Exactly two players per team before the room can start.
02Explainer and guesser roles alternate automatically by team turn count.
03Only the master device can control prompts, scoring and phase changes.
04The same prompt pool is reshuffled between enabled rounds under new clue rules.
05Correct guesses are recorded as events that later become individual statistics.

03 · Realtime & privacy

Shared state propagates. Secret state does not.

Joined devices subscribe to room-change events and refresh when the shared room changes. The API deliberately returns different information depending on the device role.

PUBLIC ROOM STATESafe for every joined player

Phase, players, teams, scores, current round, active team, explainer/guesser roles, timer end and readiness state.

MASTER PRIVATE STATESecret prompt only where it belongs

The current word is separated from the sanitized shared snapshot and returned only to the authorized master player.

01Create / joinSecure room code, invite URL and QR
02Persist roomShared room state + version
03Publish eventRoom change notification
04Refresh clientsJoined phones receive current state
05Restrict secretPrivate prompt to master only

04 · Identity & progression

A temporary room became a persistent social product.

Guests can play immediately, while registered players can build a profile, return later and accumulate career history. That required identity, security, persistent statistics and progression—not just a game screen.

ACCOUNT

Email-verified profiles

Repeat players can create profiles while guests can still join without account friction.

SECURITY

Hashed PIN + sessions

PINs use PBKDF2 hashing, failed attempts trigger temporary lockout and stored session tokens are hashed.

HISTORY

Per-player game records

Each completed game records wins, guesses, explanations, final guesses, turn counts and category/round breakdowns.

PROGRESSION

Stats, leaderboard, achievements

Career totals, streaks, MVP-style metrics, teammate history and achievement milestones create continuity between sessions.

05 · Product decisions

The product is designed for a group around a table, not a user at a desk.

ONBOARDING

Link + QR room entry

A host gets an invite link and QR code so every player can enter the same room from their own phone.

PROMPTS

Player-written or built-in

Rooms can use private custom prompts or draw from a built-in bilingual bank of roughly 3,000 prompt records.

ROUNDS

Rules change, prompts persist

Free explanation, one-word clue and mime modes reuse the same prompt pool across up to three rounds.

CONTROL

Transferable master device

The phone holding the private prompt and controls can be reassigned to another joined player when needed.

AVATARS

Custom identity layer

Profiles include configurable visual avatars rather than relying on a generic account icon.

PWA

Phone-first web product

The UI, manifest and interaction model are built for mobile use and installable web-app behavior.

06 · My role

I translated a familiar offline game into a complete digital product system.

I designed the game-state logic, room and role behavior, privacy split, realtime synchronization, identity flows, profile security, data model, statistics and consumer interface. I also iterated the rules and UX around actual play behavior rather than treating the game as a static specification.

WHAT IT SHOWS

Realtime state thinking

Managing shared state, private state, permissions and transitions across multiple devices without exposing the underlying complexity to players.

WHAT IT SHOWS

Full consumer-product depth

Gameplay, onboarding, security, identity, persistence, multilingual UX and progression working as one coherent product.