01 · Idea and goal
The idea is simple and competitive: test yourself in your own field against a live opponent. Not a solo quiz on the couch, but a duel — you pick a role (systems analyst, backend developer, QA, frontend and so on), the system finds you an opponent in the same specialty, and you race to answer questions. Whoever scores more over three rounds takes the points and a spot in the ranking.
The goal: build a full-fledged multiplayer game with sign-up and sign-in, opponent matching, a synchronized timed battle, scoring, per-role rankings, a profile, friends and invitations — all without a separate backend server, entirely on Firebase. That makes the project cheaper to maintain and lets it scale on its own.




02 · What was hard
- A synchronized two-player battle without our own server. Two phones have to see the same match: the same question, the same timer, the same score — and react to the opponent's moves instantly. It's all built on Cloud Firestore listeners: a battle session is a document, both clients listen for changes and update the screen live. No server was needed for this.
- Matchmaking by role. A player has to be paired with an opponent from the same specialty and roughly the same level, and if no match is available right now, kept in a queue with a "Looking for an opponent…" status — without freezing the app. Matching and creating the game session is separate logic on top of Firestore.
- Fair scoring and anti-cheat on timing. Points are awarded for accuracy and speed, and the scoring rules live in settings so they can be changed without rebuilding the app. It was important that a round's result couldn't be faked on the client — the battle state is kept in the shared session, not in one phone's memory.
- Rankings per role, not just one overall. Each player has their own score and stats in every role (wins, points, match history), plus a global leaderboard. It's a carefully designed data structure in the user profile that updates after every battle.
- Sign-up, nicknames and moderation. Email sign-up with verification and code-based sign-in, real-time nickname changes, nickname validation and a banned-words filter — so nothing inappropriate shows up in the public ranking or invitations. Players upload their own avatars, with caching and aspect-ratio normalization.
The core engineering challenge: create the feel of a live one-on-one match using Firebase alone, without a separate backend — cheaper to maintain and easier to scale.
03 · How the game works
Role and opponent search
The player picks their IT specialty — systems and business analyst, developers (Android, iOS, Java, Python, frontend), QA engineer, project manager and others. Then they hit "Play": search for a random opponent or invite a friend with a link. While matching is in progress, a live search status is shown.


The battle itself
Two players, three rounds, a shared timer. The battle screen shows both avatars, the current score and a round indicator. A question about the chosen specialty appears with multiple-choice answers; whoever answers faster and more accurately takes the lead. Right and wrong answers are highlighted immediately, and the match state stays in sync for both players.


Rankings and profile
After a battle, points count toward the standings. The leaderboard shows the top players and their points; the profile shows personal match stats (wins and losses against specific opponents) and the per-role ranking. Friends, sent and received invitations, and game history are here too.
Account and settings
Email sign-in with verification, choosing and changing a nickname with validation, avatar upload, sound and music, and inviting friends by link. The app description sums it up briefly: an intellectual battle of minds with rankings, tournaments and a regularly updated question bank.


04 · Result
The result is a complete multiplayer game: sign-up and sign-in, role selection, opponent matching, a synchronized timed battle, scoring, per-role rankings, a profile with stats, friends and invitations. The version 1.0.8 release build for iOS and Android comes from a shared Flutter codebase.
The key decision: everything online runs on Firebase. Cloud Firestore handles matches, points and rankings in real time, Auth handles sign-in, Storage holds avatars, and Analytics tracks player behavior. There's no separate server to administer and scale by hand.
05 · What's next
The game keeps evolving: more questions for each role and level, tournaments and competitions between players, match history and chat, and fine-tuning the scoring through server-side settings without rebuilding the app. The Firestore data structure makes it possible to add roles, modes and rules without rewriting the core.
The app builds for iOS and Android from a single Flutter codebase, and the entire server side is managed Firebase services. So content updates (questions, scoring rules) roll out without an app store release, and new screens ship as a regular app update.