Skip to content

Phase 2: Control Plane #7

@bmfischer3

Description

@bmfischer3

Control Plane — Super Admin Dashboard

Status: ✅ Complete

Completed

  • Admin layout with super_admin permission guard
  • Admin sidebar (Dashboard, Tenants, Audit Logs)
  • Tenants feature API: create, update, freeze, delete
  • Tenants DB queries (list, get, create, update, soft delete, count by status)
  • Admin API route handlers (/api/admin/tenants)
  • Tenant components: TenantTable, TenantForm, FreezeToggle, FeatureEditor, DeleteTenantButton
  • Admin pages: dashboard overview, tenant list, new tenant, tenant detail (tabbed)
  • Audit logging API (features/audit/api/log-action.ts)
  • Shadcn components installed: table, badge, dialog, select, textarea, dropdown-menu, toast, tabs, switch

Admin Pages

  • /admin — overview dashboard with tenant count stats (active/frozen/suspended)
  • /admin/tenants — tenant list with status badges
  • /admin/tenants/new — create form (auto-slugs from name)
  • /admin/tenants/[tenantId] — tabbed detail (Overview + status control, Features, Danger Zone)

API Routes

  • GET /api/admin/tenants — list all tenants
  • POST /api/admin/tenants — create tenant (+ Stack Auth team)
  • GET /api/admin/tenants/:id — get tenant detail
  • PATCH /api/admin/tenants/:id — update tenant (name, slug, features, status)
  • DELETE /api/admin/tenants/:id — soft delete tenant

Key Files

  • src/app/admin/layout.tsx — admin layout + guard
  • src/features/tenants/api/ — create, update, freeze, delete actions
  • src/features/tenants/db/queries.ts — tenant DB queries
  • src/features/tenants/components/ — admin UI components
  • src/features/audit/api/log-action.ts — audit logging

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions