Platform Administration
The /admin panel provides platform-wide management of users, organizations, and projects. Access is restricted to users with a platform role.
Platform roles
Strata has three platform roles, stored on the user record independently of any organization membership:
| Role | Description |
|---|---|
| user | Regular user. No admin panel access. This is the default for all accounts. |
| platform_admin | Can access the admin panel. Can view all data, suspend/unsuspend users, force-logout users, and archive/unarchive projects. |
| superadmin | Full platform control. Everything a platform_admin can do, plus: change platform roles, override org plans, delete users, delete projects, and move projects between organizations. |
Platform roles are separate from organization roles. A user can be a platform_admin while being a regular member in their organization, or vice versa.
Admin panel
The admin panel at /admin provides a tabbed interface with four sections:
- Overview — platform statistics including total users, organizations, projects, and a breakdown of organizations by plan tier
- Users — all users on the platform with name, email, platform role, suspension status, creation date, and organization count
- Organizations — all organizations with name, slug, plan, Stripe status, member count, and project count
- Projects — all projects with name, slug, status, owning organization, and creation date
Each row has a three-dot dropdown menu with the available actions for that item. The current user's own row has no action controls — self-actions are blocked both in the UI and server-side.
User management
Suspend / Unsuspend
Available to platform_admin and superadmin. Suspending a user sets their account as banned and immediately deletes all their active sessions (force-logout). The user cannot sign in until unsuspended.
Safety rules:
- You cannot suspend yourself
- Only a
superadmincan suspend anothersuperadmin
Force logout
Available to platform_admin and superadmin. Deletes all active sessions for a user, forcing them to re-authenticate on their next visit. Does not ban the account — they can sign back in immediately.
Change platform role
superadmin only. Promotes or demotes a user between user, platform_admin, and superadmin. You cannot change your own platform role.
Delete user
superadmin only. Permanently deletes a user account. This cascades to delete their sessions, account records, and organization memberships. You cannot delete yourself, and you cannot delete another superadmin.
Destructive actions require confirmation by typing the user's name.
Organization management
Override plan
superadmin only. Directly sets an organization's plan to any tier (Free, Team, Business, or Enterprise), bypassing Stripe billing. Useful for granting enterprise access to partners or correcting billing issues.
Project management
Archive / Unarchive
Available to platform_admin and superadmin. Archived projects are hidden from the project list but not deleted. They can be unarchived to restore visibility.
Move between organizations
superadmin only. Transfers a project from one organization to another. The operation validates that the target organization exists and checks for slug collisions — if the target org already has a project with the same slug, the move is rejected and the project must be renamed first.
Delete project
superadmin only. Permanently deletes a project and all associated data (entries, changesets, tabs, registry entries, etc.) via database cascades. Requires typing the project name to confirm.
Capability summary
| Action | platform_admin | superadmin |
|---|---|---|
| View all users / orgs / projects | ✓ | ✓ |
| View platform statistics | ✓ | ✓ |
| Suspend / unsuspend users | ✓ | ✓ |
| Force-logout users | ✓ | ✓ |
| Archive / unarchive projects | ✓ | ✓ |
| Change platform roles | — | ✓ |
| Override organization plans | — | ✓ |
| Move projects between orgs | — | ✓ |
| Delete projects | — | ✓ |
| Delete users | — | ✓ |
Safety measures
All admin actions include safety rails:
- Self-action blocking — you cannot suspend, delete, or change the role of your own account
- Superadmin protection — only a superadmin can act on another superadmin
- Confirmation dialogs — destructive actions (delete) require typing the target's name
- Typed error handling — all actions are wrapped in
withActionResultand return structured{ success, error? }results - Slug collision checks — moving a project validates no slug conflict exists in the target org