Skip to content

The whole platform

From the outside, Kacky looks simple. You hop on a server, you hunt maps, your times show up on the website. That simplicity is the point, and it hides a surprising amount of machinery, nearly all of it built from scratch. Here's everything that has to work for a single time to show up.

The Kacky platform at a glance: the game servers and kontrol controllers, the message bus, the backend and its database, the apps people use, and the infrastructure that keeps it all standing.

Everything behind one finish

When you cross a finish line, you're touching the near end of a long chain:

  • A Trackmania 2020 dedicated server you're playing on, one of a whole fleet, each running from EvoEsports' open-source docker-trackmania image.
  • A controller (kontrol) running next to every single server, drawing the in-game record widgets and turning your run into a clean message.
  • A message bus that carries every one of those messages.
  • A backend that owns all of Kacky's truth, backed by a database.
  • Four separate front doors, all reading from that one backend: the website, the admin panel, the Discord bot, and an app embedded inside Discord itself.
  • A map tool for anything to do with map files.

And that's just the visible half. Underneath, keeping it all standing:

  • Every server, website, and tool runs in Docker, watched over by Portainer dashboards on each machine.
  • The whole server fleet is described in code and stood up with Ansible; the app images are built in CI and pulled automatically.
  • Cloudflare sits in front of the websites, and the database is backed up three ways, every night.
  • A shared design system ties the website, the admin panel, and the Discord app together, so they feel like one product instead of three. You can browse every component in it.

That's a lot of separate moving parts for something that feels like "I finished a map." Most platforms this size are built by companies. This one was built piece by piece by the people who play it.

The parts we're proud of

Some of it was genuinely hard, and worth pointing at:

  • It's live. The website and the admin panel update the moment something happens. Set a record and it's there, no refreshing, no waiting.
  • We can update servers without kicking you off. A live server's controller can be swapped out and reloaded mid-event while you keep playing. You don't get disconnected, you don't even notice.
  • Nothing gets lost. Your finishes survive crashes, deploys, and dead servers. The care that went into that has its own page.
  • The whole server fleet is code. No server is hand-built. Ten of them can go from nothing to running in about seven minutes, because they're stamped out from a description. See Running the servers.
  • Years of history were rescued. Old records from long-dead Kacky systems were dug out and imported, so the back catalogue kept its past instead of starting from zero.
  • It all feels like one thing. The website, the admin panel, and the Discord app share a single design system, so moving between them isn't jarring.

Why it matters

None of this is off the shelf. It's a stack of custom pieces, much of it rebuilt from the ground up over the years, that turns "you crossed a line on a server somewhere" into "your rank went up on the website" reliably, in seconds. The rest of these docs walk through how each piece works. Start with the architecture overview for the shape of it, or the concepts if a term tripped you up.