// the find
boardgameio/boardgame.io
State Management and Multiplayer Networking for Turn-Based Games
boardgame.io is a framework for building turn-based multiplayer games in JavaScript/TypeScript. You define moves as pure state transitions; the framework handles syncing that state across players via Socket.io, persisting it server-side, and optionally running MCTS bots against it. It's aimed at indie game developers and hobbyists who want multiplayer without writing networking code.
The state machine model (phases, stages, turn order) is genuinely well-designed — you can express complex game rules like simultaneous turns or phase-specific move sets without fighting the framework. The built-in debug panel with time-travel replay is a real time-saver during development. Immer is used under the hood for state mutations, so you write natural imperative code but get immutable state transitions. The testing utilities let you drive a game through moves programmatically without spinning up a server, which is the right way to unit test game logic.
The last commit was April 2025 and the repo has been in slow-motion maintenance mode for a couple of years — open issues pile up, PRs sit unreviewed, and the roadmap file hasn't moved. The lobby system is a minimal reference implementation, not something you'd ship; you'll end up rewriting it. Storage backends are limited: in-memory and flat file are included, but anything real (Postgres, Redis) requires you to implement the interface yourself. The Python client is a thin wrapper that communicates with the JS server via HTTP polling — it's a novelty, not a first-class option for AI bots.