Geti UI Development
For the full architecture reference (feature-folder layout, data fetching, and generated API types) read the
application/ui/AGENTS.mdfile.
Quick Start
- Work from
application/ui/. - Use Node
>=24.2.0and npm>=11.14.0. - Install or refresh dependencies with
npm ci. - Start with
npm run format:check,npm run lint,npm run cyclic-deps-check, andnpm run type-check.
Workflow
- Keep the change inside the existing UI structure under
src/unless the task explicitly calls for build or tooling updates. - Use existing component, routing, testing, and styling patterns instead of introducing a new structure.
- Regenerate API types instead of hand-editing them when the backend contract changes.
- Escalate to component (Playwright) or e2e tests only when the change affects rendered browser behavior, i.e. prefer unit over Playwright over e2e tests.
Verification
- Use
npm run format:checkfor Prettier verification. - Use
npm run lint,npm run cyclic-deps-check, andnpm run type-checkfor normal code changes. - Use
npm run test:unitornpm run test:unit:coveragefor logic and component behavior covered by Vitest. - Use
npm run test:componentornpm run test:e2eonly when the task reaches Playwright coverage. - Use
npm run buildbefore finishing broader UI changes.
API Type Notes
npm run build:apireadssrc/api/openapi-spec.jsonand regeneratessrc/api/openapi-spec.d.ts.npm run update-specdownloads the spec fromhttps://localhost:7860(self-signed TLS, fetched with--insecure) and then rebuilds the TypeScript types.- Use
$geti-openapi-syncwhen backend API changes are part of the task.
Coordination Notes
@geti-ui/uiand@geti-ui/smart-toolsare consumed as regular published npm dependencies (npm install/npm ci) — no clone/preinstall step, do not vendor them locally.- Keep generated API artifacts and the consuming UI changes in the same change set when the contract changes.