NimBuild Docs

Admin Dashboard

User management, credit adjustment, and subscription control.

Overview

The admin dashboard is available at /admin and requires user.role = 'admin'.

Setup

Create an admin account:

ADMIN_EMAIL=your@email.com pnpm admin:setup

Or manually set role = 'admin' in the database for an existing user.

Features

User Management (/admin/users)

  • Search users by name or email
  • Paginated user list (20 per page)
  • View: name, email, credits, role, ban status, plan

User Actions

ActionEndpointDescription
Adjust creditsPUT /api/admin/users/[userId]/creditsAdd or remove credits
Change subscriptionPUT /api/admin/users/[userId]/subscriptionUpdate user's plan
Ban userVia admin panelTemporary or permanent ban

Subscription Management (/admin/subscriptions)

  • View all active subscriptions
  • Filter by plan and status

Credit Ledger (/admin/credits)

  • View all credit transactions across users
  • Filter by reason, date range

Authorization

Admin pages are protected by the admin route group layout in app/[locale]/(admin)/layout.tsx, which calls requireAdmin() from modules/auth:

// Checks user.role === "admin"
// Redirects non-admins away from the admin area

Admin API routes also call requireAdmin() from modules/auth. The underlying implementation lives in modules/auth/admin.ts.

On this page