Skip to content

Admin console (platform operators)

The platform admin console is for the operator of an EvoPlatform installation — the person who runs the service itself. If you're a customer using an app, you don't need anything here: workspace admins manage their teams from inside the apps.

Access

The console is served at the platform service's root URL (for a default install, the host you deployed to, e.g. https://platform.example.com/). Sign in with a platform admin account — email and password only; platform admins sit above workspaces, so there is no workspace field.

The very first admin comes from the deployment itself: on first boot the service creates one from BOOTSTRAP_ADMIN_EMAIL / BOOTSTRAP_ADMIN_PASSWORD (only when no platform admin exists yet). After signing in, change that password, and add more admins from the Users tab if you want a second set of hands.

The console sign-in screen

Every console action calls the platform's /admin/* API, which requires a token carrying the platform_admin claim — the console itself holds no authority. Logins are rate limited per IP.

(All screenshots below are from a local development install with fictional demo data.)

The tabs

Tenants

Each row is a customer workspace: slug, name, plan, status, and company profile (phone, address).

The Tenants tab listing workspaces with status and lifecycle actions

  • New tenant creates a workspace by hand — the manual alternative to self-service signup. Admin-created tenants start with access to every registered app.
  • Suspend / Activate blocks or restores all logins for the workspace. Suspension is reversible and touches no data.
  • Delete is a soft delete (restorable). Purge is real erasure and deliberately requires the tenant to be soft-deleted first, so one mistaken click can never destroy data.
  • Export downloads the tenant's platform-owned data as JSON (users, roles, app access, audit trail — secrets structurally excluded) for portability or backup.

+ New tenant opens the workspace form, including the company profile:

The New tenant overlay with company name, slug, and address fields

Users

All accounts, filterable by workspace.

The Users tab with roles per app, admin flags, and verification badges

  • Create users, edit profiles, assign per-app roles from the dropdowns.
  • Tenant admin lets a user manage their own workspace's members from inside the apps. Platform admin grants access to this console — hand it out sparingly.
  • Password sets a new password for a user (the self-service path is the emailed reset link; this is the override).
  • An unverified badge means the user hasn't proven their mailbox yet and cannot sign in.

Apps

The registry of applications connected to the platform.

An app card: client id, roles, Stripe price, and the tenant-access matrix

  • Register app creates a client id and shows the client secret once — the platform stores only a hash. (The evo register CLI automates this and writes the credentials into the app's .env.)
  • Rotate secret invalidates the old secret immediately — use it if a secret may have leaked or on a schedule.
  • Roles defined here are what workspace members can be assigned per app.
  • Stripe price is the Price id sold as this app's subscription; checkout uses it, and the webhook then drives access automatically.
  • Tenant access is the enablement matrix: which workspaces may sign in to this app, each with a status — active, trial (with end date), past due (with grace date), or suspended. This is your manual override for what billing and signup normally manage on their own.

Audit

Every significant action — logins, member changes, invites, billing events, admin operations — with who, what, and when. Filter by action, workspace, and date range; export the filtered set as CSV or JSON.

The Audit tab with filters, a date range, and CSV/JSON export

SMTP

Where the platform's email (verification, invites, password resets) comes from. Resolution order per send: the tenant's own config → the platform default (set it here) → the environment fallback. Passwords entered here are stored encrypted, which is why a fresh production install should get its SMTP config through this tab rather than an env file.

The SMTP tab, scoped to the platform default

Common tasks

TaskWhere
Onboard a company by handTenants → New tenant (starts enabled on all apps)
Let signups happen without youSet SIGNUP_MODE (invite with links from POST /auth/signup-links, or open)
Make someone a workspace adminUsers → Edit → Tenant admin
Connect a new appApps → Register app, or evo register from the app repo
Sell an appApps → Stripe price (plus Stripe keys in the service env)
Cut one workspace off one appApps → Tenant access → status dropdown or Disable
Answer "who did this?"Audit → filter → Save CSV
Recover a lost admin accountSet the bootstrap env vars and restart the service

Documentation hub for Evomedia.net LLC products.