Real-time multiplayer over WebSockets
Moves are validated server-side and pushed instantly to your opponent by our Go realtime service — one goroutine per match room. No desync, no client-side cheating possible.
Dart for the game (Flutter + Flame Engine), the admin panel (Flutter Web) and the Serverpod backend, plus a Go microservice that owns the real-time match traffic. Three platforms — iOS, Android and web — from one Flutter codebase.
Moves are validated server-side and pushed instantly to your opponent by our Go realtime service — one goroutine per match room. No desync, no client-side cheating possible.
Quickly pairs you with an opponent of similar skill. ELO rating updated after every match, global leaderboard visible in app.
Hit table-online.ro and you are in a match within 30 seconds. No mandatory downloads, optional account sync between web and mobile.
Push notifications when it is your turn, matches resumed exactly where you left off, IAP for users who want more. One codebase, two app stores.
Dice, piece movements, transitions — all rendered by Flame on top of the Flutter engine. No hybrid framework, no WebView.
Strict implementation of classic rules: bar, doubling, hitting, bearing off. Server-side validation, so consistent across all platforms.
The same team writes the game, the admin panel and both backend services. Dart everywhere, plus Go exactly where raw real-time throughput matters.
🎮 Game
Flutter + Flame Engine
Game loop, sprites, collisions, drag&drop support for pieces. Flutter overlays for chat, menus and HUD — without leaving the framework.
🌐 Web (players)
Flutter Web
Browser version of the same app. Almost 100% code shared with mobile, hot reload on all platforms simultaneously.
📊 Admin panel
Flutter Web
User moderation, match statistics, real-time monitoring. UI components shared with the game app — update once, updated everywhere.
🔧 Backend
Dart + Serverpod
Auth, users, friends, tournaments, chat, in-app purchases and admin. Type-safe API and ORM over PostgreSQL — models defined once and used identically on client and server.
⚡ Real-time games
Go microservice
Owns the hot path of every match: WebSocket connections, one goroutine per game room, move validation. Runs next to Serverpod and shares the same PostgreSQL and Redis.
💾 Data
PostgreSQL + Redis
PostgreSQL for profiles, match history and rankings. Redis for sessions, matchmaking queue and real-time state of active matches.
This app is an engineering argument, not just a game. It proves Flutter + Dart can cover a real product — game, backend, admin — with a small team, and that adding Go only where it pays off keeps real-time fast. If you wonder whether Flutter web is viable for products, or whether Dart is "real" on the backend, play a round and answer yourself. Everything you touch on table-online.ro and in the apps was written by us.