Skip to content

Accounts and teams

Admin console

A full admin console in its own route group behind requireAdmin(). It's built on Better Auth's admin plugin, and impersonation stores the admin's session separately so you can stop at any time.

What you get

  • Overview: Users, workspaces, paying customers and bans at a glance.
  • Analytics: Daily sign-ups, paying users by plan, usage and credit flow.
  • Users: Search, ban, impersonate, promote and grant credits.
  • Organizations: Every workspace with its members and plan.
  • Webhooks: Incoming provider events, with one-click retries.
  • Audit log: Who changed what, for every admin and team action.
  • Announcements: Publish banners and changelog entries to users.
  • Access: Open sign-up, invite-only, or a waitlist you approve.
  • Feature flags: Global switches, rollouts and per-user overrides.
  • Plans: Edit plan names, prices and features without a deploy.
  • Coupons: Discount codes for Stripe or Polar checkouts.
  • Roadmap: A public roadmap users can vote on.

Turn it on

  • Sign in once, then run pnpm admin:promote you@example.com
  • adminConfig in config.ts

Where it lives

  • app/(admin)/admin/
  • features/admin/
  • trpc/routers/admin.ts
  • scripts/promote-admin.mts