UI Development
The embedded management dashboard lives in the ui/ directory. It is a React
single-page application whose API client is generated from the same OpenAPI
specification the Go SDK is generated from, and whose production build is
compiled into the controller binary.
The rules are not on this page. They are in the specifications repository, stated once. This page is the index.
The links below are full GitHub addresses rather than relative links, because the specifications repository is separate from this one and is not published as part of this site. Every other cross-reference here is relative.
The rules
| What you need to know | Stated in |
|---|---|
| What the UI is, and that it is one application rather than a frontend per domain | FR-001 |
| The setting that disables it, and what the controller serves when it is off | FR-002 |
| The stack, stated as what each part is for | FR-003 |
| The four kinds of component, and what decides which one you are writing | FR-004 |
| That the API client is generated, and what editing it by hand costs | FR-005 |
| The embedding mechanism, and the build order it forces | FR-006 |
| How the UI authenticates, and that it decodes the token without verifying it | FR-007 |
| That the permission model is osapi's, cited rather than restated | FR-008 |
| Where the commands live, and why they are not listed as prose | FR-009 |
Why ui/ is excluded from the coverage gate | FR-010 |
The commands
They are in the justfile, not here. just --list shows every recipe; the ones
this directory uses are prefixed react-. Build through just build,
just ready or just test rather than a recipe directly — each builds the UI
before the binary, which is the order FR-006 explains.
Related
- Contributing — setup, building, and the conventions code follows
- UI Architecture — what an operator configures and sees
- Adding an API Domain — the layers an endpoint touches