Gateway admin console [UI]
Source path: knowledge-base/diagrams/ui/gateway-admin.md
# Gateway admin console `[UI]`
The control-plane dashboard: one role-aware chrome (`GatewayConsoleShell`) wrapping a set of console pages. What a viewer sees depends on their platform role and entitlement ([platform-model](../concepts/platform-model.md)) — admins run the business, a paying Director manages billing, an unpaid visitor sees plans.
```mermaid
flowchart LR
Shell["**GatewayConsoleShell** — SpineShell frame<br/>role-aware nav rail · learn links · profile footer"]
Shell --> Admin & Owner & Explore
subgraph Admin["admin / owner only"]
direction TB
Users["**/users** → UsersView<br/>Directors, admins & subscriptions"]
Fleet["**/fleet** → FleetView<br/>hosted instances · health · spend"]
Devices["**/devices** → DevicesView<br/>device usage & access points"]
end
subgraph Owner["the account owner (Director)"]
direction TB
Account["**/account** → AccountView + BillingDashboard<br/>billing & subscriptions"]
Domain["**/domain** → DomainView<br/>runtime · address · usage (Hosted)"]
Plans["**/plans** → PlansView<br/>pricing & Director plans"]
end
subgraph Explore["everyone"]
direction TB
Lib["**/exchange** → ExchangeView"]
Pub["white-paper · FAQ · download"]
end
```
- **One shell, role-gated nav.** `GatewayConsoleShell` builds the rail from the viewer's role: the admin group (Users · Fleet · Devices) appears for admins/owners; Account/Domain for a paying Director; **Plan** (not Plans) for an unpaid visitor who needs to subscribe first. The gateway never touches `instanceMembers` — this is platform authority, not in-instance roles.
- **`/domain` here ≠ the instance `/domain/[id]`.** The gateway's `/domain` (Hosted runtime/address/usage) collides with an instance route by path; `GATEWAY_EXACT_PAGES` disambiguates the exact page.
- **Billing terms stay explicit.** "Hosted" is the subscription product; the console reads amounts from the application price book, never Stripe directly.
**Where it lives:** `src/features/gateway/console/` — `GatewayConsoleShell.tsx` · `FleetView.tsx` · `HostView.tsx` · `AccountView.tsx`; `src/features/gateway/admin/` — `UsersView.tsx` · `DevicesView.tsx` · `BillingDashboard.tsx` · `PlansView.tsx`. Routes: `src/app/(gateway)/{users,fleet,devices,account,domain,plans}/`. Public surfaces: [gateway-public](gateway-public.md). Enforcement: [PERMISSIONS.md](../../knowledge/governance/PERMISSIONS.md) · [access-gate](../flows/access-gate.md).
Open on GitHubRaw Markdown source