Built as a daily driver for keeping tabs on personal infrastructure without opening five browser tabs.
Data sources: GitHub Actions API (CI runs, open PRs, repo stats), Docker socket (container stats via subprocess), Caddyfile parser with HTTP health checks, GitHub Projects v2 via GraphQL.
Stack: FastAPI + Jinja2 on the server. HTMX polling on the client — no JavaScript framework, partial swaps every 10–30 seconds depending on panel. Design system is draftspace-ui, a purpose-built design token kit.
The interesting part is the ChoiceLoader pattern that lets the app override specific templates from the shared design system while inheriting everything else — so the devops-specific views (CI runs grid, Docker container cards) live alongside the base components without forking.
_env = Environment(
loader=ChoiceLoader([
FileSystemLoader("devops/templates"),
FileSystemLoader("draftspace-ui/templates"),
]),
)
Lives in atlas-apps/devops. Runs locally on arch, served behind Caddy.