Skip to main content
The frontend is a React 19 single-page application built with Vite. Its source lives in frontend/src/.

Stack

TanStack Query manages all server state. Long-lived list views (minions, jobs, keys, fleet, etc.) auto-refresh every 30 seconds without any user interaction.

Source layout

Each features/<area>/ folder mirrors the corresponding backend module. Feature components, hooks, and route definitions live together inside their feature folder.

Theme

The app uses CSS variables for light/dark theming, defaulting to dark mode. The single accent colour is Halite Amber #e5a00d.

Generated API types

The file frontend/src/shared/api/types.gen.ts is generated from the backend’s OpenAPI schema. Do not hand-edit this file. After changing any backend Pydantic schema or route, regenerate it:
The script boots the backend against a throwaway SQLite database, extracts app.openapi(), and pipes the JSON through openapi-typescript to produce types.gen.ts. Commit the regenerated file alongside your backend changes.
gen-types.sh requires the backend’s .venv to exist and have the package installed (pip install -e '.[dev]'). The script activates it automatically — you do not need to activate it yourself first.