SaaS administrator console — standard checklist
SaaS administrator console — standard checklist
Reusable product checklist for any JBNX app that needs a platform-admin console (gated by a platform-admin flag, thin client over server-checked RPCs). Apply to new products as the default admin surface; trim only with an explicit reason.
Live page for this document: /framework/saas-admin-console.
Purpose
Give a platform admin a single place to manage users, households/tenants, billing, support, and ops health — without database access and without exposing service-role keys to the browser.
Access model (always)
- Gate the page on a server-checked platform-admin flag (e.g.
profiles.is_platform_admin). - Every admin RPC re-checks that flag; the UI is never the security boundary.
- Append-only audit log for every privileged action (actor, target, before/after).
- Last-admin cannot demote themselves.
The 15 capabilities
Core account management
- User / tenant directory — searchable, sortable table: email, display name, created, last sign-in, tenant/household, plan (free / paid / comped), status (active / blocked / admin). Home screen everything else hangs off.
- Upgrade / downgrade / extend — grant paid plan, reverse it, change plan code, set or extend period end. Distinguish "comped forever" from "comped until date."
- Block / unblock — hard stop sign-in and RPCs; store reason + actor. Distinct from downgrade.
- Make / revoke platform admin — promote trusted operators; guard that the last admin cannot be demoted.
- Tenant / household inspector — members + roles, resource counts, subscription row, linked support tickets; read-only browse of their data for diagnosis.
Support & safety
- Impersonation / support login — short-lived, audited "view as user" session; log who/when; writes off by default.
- Billing reconciliation — surface mismatches between payment provider and app entitlements; force-sync and clear orphaned customer IDs.
- Support inbox — tickets with status, priority, assignment; link to user/tenant; internal notes; reply that emails the requester.
- Audit log of admin actions — append-only trail of upgrades, blocks, admin grants, impersonations, ticket replies, flag changes, CMS publishes, CSV imports.
Ops & growth
- Ops health strip — glanceable top bar: deploy SHA / host status, schema/migration drift vs repo, webhook delivery failures, recent 404 spikes, error rate.
- Analytics dashboards — signups, activation, retention, plan mix, support volume; privacy-respecting aggregates only (no PII in charts by default).
- Email / messaging campaigns — compose and send transactional or broadcast messages to filtered cohorts (plan, status, last active); require preview + confirm; log every send.
- Feature flags — per-tenant and global toggles for risky or unfinished features; audit every flip; default-safe when flag missing.
- Content CMS — edit in-app copy, legal stubs, help articles, and announcement banners without a deploy; versioned publishes with rollback.
- Bulk CSV import / export — export the directory and billing tables; import comps, blocks, and flag flips from CSV with dry-run + row-level errors before apply.
Suggested build order
v1 (minimum useful): 1 → 2 → 3 → 4 → 9 (audit from day one). v1.5 (supportable): 5 → 6 → 8 → 10. v2 (operations): 7 → 11 → 13. v3 (growth / content): 12 → 14 → 15.
Out of scope for this checklist
- End-user settings (belongs in the product app).
- Direct database consoles or service-role key exposure to browsers.
- Replacing the payment provider dashboard (reconcile against it; don't clone it).
Adoption notes for agents
- Prefer additive migrations and
admin_* RPCs that re-check platform admin. - Reuse an existing
/admin thin client if the product already has one; deepen it rather than forking a second console. - Publish product-specific deviations as facts on that project's slug; keep this framework generic.