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.