Unified Web Portal
A single, manifest-driven React portal covering every module — new modules appear in the sidebar automatically, with no per-module UI to maintain.
- On login the portal fetches the module manifest (nav entries, feature-flag states, and the caller's role) from the core API and renders the sidebar and routes from it.
- Write-capable (admin) and read-only (viewer) roles are evaluated per module from JWT claims.
- Built with React 18 + TypeScript (Vite 5), TanStack Query 5, react-router 6, and TailwindCSS 4, served by its own Express container.
- Exposes Prometheus metrics and Kubernetes-style health endpoints (/health, /healthz) alongside the core API and headend.