← All frames
Master-admin · Frame (a) · route /admin/portals

Portals

The master-admin fleet view. Every tenant portal FuzeFront hosts — its name, slug, lifecycle status, primary domain, and plan. This replaces the DB script / support ticket that is the only way to run portal operations today. Platform-admin only (Permit ReBAC).

All portals

4 portals · 3 active

PortalStatusPrimary domainPlanActions
FuzeFront root fuzefront
Active app.fuzefront.com Scale Open
Northwind northwind
Active portal.northwind.example Pro Open
Initech initech
Active no custom domain Free Open
Acme Reseller acme
Suspended portal.acme.example Pro Open

Contract (anticipated — @fuzefront/portal-client, not frozen today). Rows come from GET /api/v1/admin/portals (PortalPage — cursor-paginated; "Load more" advances page.cursor). Status is the portal lifecycle (active / suspended). Suspend/resume is a status transition — PATCH /api/v1/admin/portals/{portalId} with { status } — and the row status flips in place, no full reload (see states frame, d). The root portal (slug: fuzefront) Suspend is disabled: a self-inflicted fleet-outage guard, also enforced server-side. Platform-admin only (Permit ReBAC parent→child org-admin derivation); a non-admin sees the access-denied state, never this table.

Review · portal-admin-consoles approve or reject each flow ↓
master-admin-portalspendingApproveReject
portal-consolependingApproveReject
portal-billingpendingApproveReject