Web panel for managing a single-host fleet of Minecraft servers running in Docker. See README.md for the project overview and CONTRIBUTING.md for the dev loop.
FastAPI + Jinja2 + HTMX backend, Supabase (Postgres + service-role) for the servers/players/tombstones tables, aiodocker against /var/run/docker.sock, CodeMirror (vendored) for the in-app file editor. Python 3.12, uv for deps.
- Surgical changes only. Touch what the task requires; don't clean up adjacent code, comments, or formatting.
- Route modules are thin. HTTP wiring lives in
src/mcontrol/routes/; business logic insrc/mcontrol/services/andsrc/mcontrol/domain/; storage adapters insrc/mcontrol/infra/. - No inline styles. Components consume
--token-namevariables fromsrc/mcontrol/static/tokens.css. New colors go in the semantic layer oftokens.css, never as raw hex in templates. - Tests mock collaborators. Real Supabase and Docker socket are not available in CI. Use
monkeypatchto stubdb.*and the Docker client. Seetests/conftest.pyandtests/test_home.pyfor the pattern. - Comments are sparse. Default to no comments. Add one only when the why is non-obvious: a hidden constraint, a workaround, a surprising invariant.
uv run pytest -v # must pass
uv run ruff check . # must be clean