Own product · Competitive Trivia Game: Flutter App + Bale Bot on One Engine

Quizy

A competitive Persian trivia game played both as a Bale messenger bot and as a Flutter Android/PWA app. Both run on one async Python engine, so app players and bot players share the same matchmaking queues and can play each other live.

My role
Sole developer and designer: game design, Flutter app, Python backend, admin, ops
Year
2026
Built with
Flutter & Riverpod · FastAPI (Python 3.11) · PostgreSQL · Redis
View live site

By the numbers

  • 2 Play surfaces on one engine
  • 6 Game modes
  • 39 App routes
  • 94 API endpoints
01

The Challenge

The game started as a Bale bot with a live player base. A native app needed to reach players outside the messenger without splitting the community: every mode, wallet, leaderboard and duel had to work the same on both surfaces, and running bot games could never be interrupted by an app deploy.

02

The Approach

I kept the server as the single source of truth: one Postgres, one Redis and one game engine. A FastAPI gateway serves the app over 94 endpoints. Cross-surface duels go over a Redis RPC seam, so an app player can be matched with a Bale player in real time.

The Flutter client is a thin, feature-organised Riverpod app. It uses WebSocket pushes for turn-based games, a version gate for forced updates, Cafe Bazaar in-app billing verified server-side, and a token-based arcade design system with full RTL and Persian digits.

03

The Outcome

The app is live on Cafe Bazaar and as a web app, alongside the original bot. It has six play modes, leagues and cups, missions, friends and chat, a shop with real-money coin packs, and a web admin that shows live games from both surfaces on one dashboard.

What I built

  • Cross-platform play: Flutter app and Bale bot share queues, wallets and leaderboards

  • Six modes: turn-based, real-time duel, solo endless, daily, weekly and story map

  • Async Python backend: FastAPI gateway, SQLAlchemy on Postgres, Redis matchmaking

  • Cafe Bazaar in-app billing with server-side RSA verification

  • Leagues, cups, missions, daily chest, friends, chat and QR invites

  • Web admin with live games, analytics, funnels, finance and moderation

Built with

Flutter & Riverpod FastAPI (Python 3.11) PostgreSQL Redis WebSockets Docker Cafe Bazaar Billing