Admin Panel
The Admin Panel is available to users with the admin or superadmin role. It provides platform-wide visibility into users, revenue, support, security, content management, and system health.
Overview Dashboard
The Overview page is the landing screen of the admin panel. It displays live platform metrics and refreshes automatically every 60 seconds.
KPI Cards
Four key performance indicator cards appear at the top:
| Card | Primary Value | Subtitle |
|---|---|---|
| Total Users | Total registered users | New users today |
| Active Bots | Currently running bots | Total bots created |
| Monthly Revenue | Revenue for the current month | Number of active subscriptions |
| Open Tickets | Unresolved support tickets | Security events today |
User Growth Chart
A chart (ActivityChart) visualizes user registration trends over time. This gives administrators a quick read on platform growth patterns.
Quick Stats Table
A recent activity feed (QuickStatsTable) shows the latest platform events so administrators can spot trends and anomalies without drilling into individual sections.
User Management
User List
The Users page presents a paginated table of all registered users. The default page size is 20 users per page.
Search and Filters:
- Search -- type to search by name or email. Results update after a 300ms debounce.
- Role Filter -- filter by All Roles, User, Admin, or Superadmin.
- Status Filter -- filter by All Status, Active, Suspended, Banned, or Disabled.
The total user count is shown in the page header.
Pagination:
When results span multiple pages, pagination controls appear at the bottom showing "Showing X to Y of Z users" with Previous/Next buttons and numbered page selectors.
User Detail Page
Click any user row to open their detail page. The page header shows the user's name (or email if no name is set) and their email address, with breadcrumb navigation back to the user list.
Header Actions:
- Change Role -- opens a dialog to change the user's role (user, admin, superadmin)
- Lock / Unlock -- lock the account to prevent login, or unlock a previously locked account
Moderation Actions:
A card below the header contains all available moderation actions. These buttons appear conditionally based on the user's current state:
| Action | Description | When Available |
|---|---|---|
| Ban | Permanently ban the user with a reason | When user is not banned or disabled |
| Unban | Remove a ban and restore account access | When user is banned |
| Suspend | Temporarily suspend the account with a duration and reason | When user is active |
| Disable | Disable the account (soft deactivation) | When user is active |
| Reactivate | Restore a banned, suspended, or disabled account | When user is banned, suspended, or disabled |
| Force Password Reset | Flag the account so the user must reset their password at next login | Always available |
| Revoke Sessions | Terminate all active sessions, forcing the user to log in again | Always available |
| Disable 2FA | Remove two-factor authentication from the user's account | When user has 2FA enabled |
Each action opens a confirmation dialog that requires explicit confirmation before executing.
Detail Tabs:
The user detail page is organized into five tabs:
-
Profile -- user information (ID, email, name, creation date, last update) and account status (role, email verification, 2FA status, account status, ban/suspension details, failed login attempts). A statistics card shows counts for bots, trades, subscriptions, and support tickets.
-
Bots -- a table of the user's most recent bots (up to 10), showing bot name, type, status, trading pair, trade count, and creation date.
-
Subscription -- the user's active subscription details including plan, status, billing cycle, amount, source (Stripe or complimentary), grant reason (if applicable), and billing period dates. Administrators can Grant Subscription to users without one or Cancel Subscription for active subscriptions.
-
Security -- login history for the user (last 20 entries), showing date, IP address, success/failure status, failure reason, and user agent.
-
Notes -- admin notes panel where staff can add internal notes about the user. The note count is shown on the tab label.
Subscription Management
The Subscriptions and Revenue page provides financial oversight of all platform subscriptions.
KPI Cards
Four cards summarize subscription health:
| Card | Value |
|---|---|
| Total Active | Number of active subscriptions |
| Monthly Revenue | Total revenue this month |
| Avg per User | Average monthly revenue per active subscriber |
| Top Plan | Most popular subscription plan with subscriber count |
Overview Tab
The Overview tab contains two charts:
- Plan Distribution Chart -- a breakdown of subscribers by plan (Free, Basic, Pro, Enterprise)
- Revenue Chart -- monthly revenue trend over time
Subscriptions Tab
A filterable, paginated table of all subscriptions.
Filters:
- Plan -- All Plans, Free, Basic, Pro, Enterprise
- Status -- All Statuses, Active, Cancelled, Expired
- Source -- All Sources, Stripe, Complimentary
Table Columns:
| Column | Description |
|---|---|
| User | Subscriber email address |
| Plan | Subscription tier |
| Status | Current status (active, cancelled, expired) |
| Source | Payment source (Stripe or Complimentary) |
| Amount | Subscription price |
| Billing Cycle | Monthly or annual |
| Started | Subscription start date |
| Expires | Expiration date |
| Actions | Cancel button (for active subscriptions) |
Pagination shows "Showing X to Y of Z subscriptions" with Previous/Next controls.
Payments Tab
A table of recent payment transactions showing payment details and statuses.
Grant Subscription
Click the Grant Subscription button in the page header to open a dialog where you can grant a complimentary subscription to any user by email. Specify the plan, billing cycle, and reason for the grant.
Cancel Subscription
Click Cancel on any active subscription row to open a cancellation dialog. Confirm to immediately cancel the subscription.
Support Tickets
Ticket Queue
The Tickets page displays a paginated table of all support tickets.
Filters:
- Status Tabs -- All, Open, In Progress, Closed
- Priority -- All Priorities, Low, Normal, High, Urgent
- Search -- search by ticket subject or user email (press Enter or click the search icon to apply)
Table Columns:
| Column | Description |
|---|---|
| Subject | Ticket subject line (truncated if long) |
| User | Email of the user who submitted the ticket |
| Category | Ticket category (displayed as a badge) |
| Priority | Low, Normal, High, or Urgent (displayed as a badge) |
| Status | Open, In Progress, or Closed (displayed as a badge) |
| Messages | Message count in the conversation thread |
| Created | Ticket creation date |
| Action | View button linking to the ticket detail page |
Pagination controls appear when results exceed one page.
Ticket Detail Page
Click View on any ticket to open its detail page, which uses a two-column layout.
Left Column -- Conversation Thread:
Messages appear in a scrollable list. Each message shows:
- The sender's name or email
- A "Staff" badge if the message is a staff reply
- The timestamp
- The message content (preserving whitespace and line breaks)
User messages and staff replies are visually differentiated by background color.
Reply Form:
Below the conversation, a text area lets staff type and send replies. Click Send Reply to post the message, which is automatically marked as a staff reply.
Right Column -- Ticket Details:
An information panel showing:
- Status -- editable dropdown (Open, In Progress, Closed)
- Priority -- editable dropdown (Low, Normal, High, Urgent)
- Save Changes -- appears when you modify status or priority; click to persist changes
- Category -- the ticket's category (read-only badge)
- User -- name and email of the submitter
- Assigned To -- the staff member assigned to the ticket (if any)
- Created -- creation timestamp
- Last Updated -- most recent update timestamp
- Closed At -- closing timestamp (shown only for closed tickets)
Security Monitoring
The Security page provides visibility into security events, blocked IPs, and login activity across the platform.
KPI Cards
Four cards summarize security metrics:
| Card | Primary Value | Subtitle |
|---|---|---|
| Auth Failures (24h) | Authentication failures in the last 24 hours | 7-day count |
| Rate Limits (24h) | Rate limit hits in the last 24 hours | 7-day count |
| CSRF Failures (24h) | CSRF validation failures in the last 24 hours | 7-day count |
| Blocked IPs | Total number of currently blocked IP addresses | -- |
Events Tab
A paginated table of security events, filterable by event type.
Type Filter:
- All Types
- Auth Failure
- Rate Limit
- CSRF Failure
- Suspicious Activity
Table Columns:
| Column | Description |
|---|---|
| Timestamp | When the event occurred |
| Type | Event type (displayed as a badge) |
| IP Address | Source IP address (monospace font) |
| User | Associated user email, or "Anonymous" |
| User Agent | Browser/client identifier (truncated to 50 characters) |
| Details | Summary of event metadata (first 3 key-value pairs) |
Results are paginated at 50 events per page.
Blocked IPs Tab
A table of all currently blocked IP addresses.
Table Columns:
| Column | Description |
|---|---|
| IP Address | The blocked IP (monospace font) |
| Reason | Why the IP was blocked |
| Blocked At | When the block was applied |
| Expires At | Expiration date, or "Permanent" badge if no expiry |
| Blocked By | The admin who blocked the IP, or "System" for automatic blocks |
| Action | Unblock button |
Block IP Dialog:
Click Block IP (appears when the Blocked IPs tab is active) to open a dialog:
- IP Address -- enter the IP to block (e.g., 192.168.1.100)
- Reason -- provide a reason for the block (required)
- Expires In -- select 1 Hour, 24 Hours, 7 Days, or Permanent
Unblocking:
Click Unblock on any row to open a confirmation dialog. Confirm to remove the block and restore access for that IP.
Login History Tab
A platform-wide login history table showing authentication events across all users.
Help Center CMS
The Help Center CMS page manages the public-facing help documentation. It is organized into three tabs.
Articles Tab
Displays a table of all help articles. Click New Article to create a new one.
Article Editor:
The article editor uses a two-column layout:
-
Left column (Content):
- Title -- the article title (auto-generates a URL slug as you type)
- Slug -- the URL-friendly identifier (auto-generated, but can be manually edited)
- Content -- a large text area for writing the article body (supports markdown)
-
Right column (Settings):
- Category -- assign the article to a category from the dropdown
- Tags -- enter comma-separated tags for search and filtering
- Published -- toggle switch to control whether the article is publicly visible (draft vs. published)
Click Save to create or update the article. Click Cancel to discard changes and return to the article list.
FAQs Tab
Displays a table of all frequently asked questions, showing the question text (truncated), category, and display order.
- New FAQ -- click to open the FAQ editor dialog where you can enter a question, answer, assign a category, and set the display order
- Edit -- click the pencil icon on any FAQ row to edit it
- Delete -- click the trash icon to delete a FAQ (with confirmation)
Categories Tab
Displays a table of help content categories, showing category name, slug, article count, and display order.
- New Category -- click to open the category editor dialog where you can enter a name, slug, and display order
- Delete -- click the trash icon to remove a category. Deletion will fail if articles still reference the category.
System Health
The System Health page monitors infrastructure and service status. Data auto-refreshes every 30 seconds, and a manual Refresh button is available in the header.
Site Settings
At the top of the page, a Site Settings card provides two critical controls:
- Maintenance Mode -- toggle on to redirect all non-admin users to a maintenance page. When enabled, an additional field appears to set a custom maintenance message (up to 500 characters).
- Registration Open -- toggle off to reject new sign-ups at the registration endpoint.
The last update timestamp and the admin who made the change are shown at the bottom of the card.
Overall Status Banner
A color-coded banner indicates the platform's health status:
- Green -- "All Systems Operational"
- Yellow -- "Partial System Degradation"
- Red -- "System Unhealthy"
The banner also shows uptime (formatted as days, hours, minutes), environment name, and application version.
Service Status Cards
Two cards show the health of core infrastructure services:
- Database (PostgreSQL) -- current status and latency in milliseconds
- Redis -- current status and latency in milliseconds
Each card displays a healthy/degraded/unhealthy indicator.
Memory Usage
A card showing heap memory usage:
- Heap Used -- current heap memory in use
- Heap Total -- total heap memory allocated
- RSS -- resident set size (total memory footprint)
- Percentage -- heap usage as a percentage, displayed with a visual bar
Queue Statistics
When background job queues are active, a table shows queue health:
| Column | Description |
|---|---|
| Queue | Queue name (human-readable) |
| Waiting | Number of jobs waiting to be processed |
| Active | Number of jobs currently being processed |
| Failed | Number of failed jobs (highlighted in red if greater than zero) |