Tankfeud is a multiplayer tank battle game and the project where I let myself have fun: a Nim game client and backend, a Flutter mobile companion app, and a shared JSON protocol over websockets tying them together.

It is also my testbed for running a real service. The backend is a container that autoscales, uses a managed MySQL-compatible database for persistence and Redis to coordinate between instances — the shape of thing I want to be able to deploy without thinking about it.

  • The game — Nim, talking to the backend over a custom websocket pubsub.
  • The backend — Nim in a container, autoscaling, MySQL-compatible storage.
  • The app — Flutter, shipped as a mobile app and as a web build.
  • The protocol — one JSON wire format shared by game and app.