GoDraughts

Context

GoDraughts is a production platform for international draughts: official FMJD rules, AI opponents at four levels, online multiplayer, ratings, clubs, puzzles and a learning path — in one app, live on iOS, Android and web.

Constraint

One person, responsible for product, architecture, backend, mobile app, infrastructure and production operations. That forces decisions: no technology that adds operational load without a clear payoff.

Decisions

  • A shared game engine in pure Dart (zero runtime dependencies), so the client and analysis tooling use the same rules implementation — no drift between client and server.
  • .NET 10 Minimal API with clean architecture: a dependency-free domain layer, EF Core 10 on PostgreSQL 17, SignalR for realtime multiplayer and spectating.
  • A self-built Expert AI: alpha-beta search with iterative deepening, Principal Variation Search, late move reductions, null-move pruning, quiescence search and Lazy SMP (parallel search), over a Zobrist-hashed transposition table, with an opening book and custom endgame tablebases (3- and 4-piece bitbases).
  • A Glicko-2 rating system shared by client and server, with leaderboards and clubs.
  • An offline coach with spaced repetition: every game (including offline games against the AI) is analysed, and mistakes return for review across five mastery levels.

What it costs to run

Self-hosted on a VPS via CapRover, with PostgreSQL, automated CI/CD, and quality guarded by over 4,800 automated tests across domain, application and API layers. AI strength is guarded by automated regression tests on tactical and endgame positions — not a guarantee of perfect play, but a measurable floor.

What I'd change

The admin tooling (React) grew organically alongside product functionality; knowing what I know now, I'd have set it up as a separate, contract-driven domain from the start rather than building reactively against the API.

By the numbers
  • 10languages
  • 6,626puzzles
  • 4,800+automated tests
  • 88database migrations
  • 647commits
Stack
  • Flutter
  • Riverpod
  • .NET 10
  • EF Core 10
  • PostgreSQL 17
  • SignalR
  • React 19 (admin)
GoDraughts — home screenGoDraughts — game setupGoDraughts — learning

A similar problem to solve?

A no-obligation introduction call about end-to-end product delivery.

Plan an introduction call