An invoicing system nobody has to edit code to configure
Billing for a multiplayer server runtime, with all its configuration in the database instead of a file.
Context & problem
Software of this kind is normally configured by editing a Lua file, which means every customer edits code they did not write, and every update overwrites what they changed. Here the config file holds technical defaults and nothing else: every dynamic setting — jobs, catalogues, fees, permissions — lives in the database and is edited from an admin panel inside the game. The host framework is detected at startup, so the same download runs on any of four.
Role
Sole developer.
Constraints
- Runs on four different host frameworks, unknown until startup.
- Installed by people who are not developers, and who will not run a build.
- An update must not overwrite a customer’s configuration.
Decisions & why
- Configuration in the database, administered in-game.
- It is the difference between an update being an update and an update being a re-configuration. It also means the person who owns the server can change how billing works without ever opening an editor.
- The two interfaces are separate repositories, wired in as git submodules with their builds committed.
- They are real applications with their own build steps, and they should be versioned as such — but the resource still has to work for someone who has never run an install command.
Stack
- Lua
- Vue 3
- MySQL
- oxmysql