Platform Administration (Internal)
1. Purpose & Context (The âWhyâ)
-
Goal: Internal tools for PenguinMails staff to manage the platform, support users, and monitor health.
-
Feature References:
-
User Journey: Support ticket â Admin looks up user â Reviews audit trail to debug.
2. UI Patterns & Components (The âHowâ)
-
Core Components:
-
AdminTable: High-density table with raw data views. -
JSONViewer: For viewing raw logs/payloads. -
StatusIndicator: Traffic light system for service health.
-
-
Analytics Patterns:
ExecutiveDashboard: See Internal Views.
-
Layout: Admin Context (Distinct visual theme).
3. Route Specifications
| Route | Access | Purpose | State/Data Requirements |
|---|---|---|---|
/dashboard/admin/plans | Super Admin | Plan Management | List all subscription plans (active & inactive). Actions: Create, Edit, Toggle Status. |
/dashboard/admin/plans/new | Super Admin | Create Plan | Form to define new plan limits and Stripe mapping. |
/dashboard/admin/plans/[id] | Super Admin | Edit Plan | Update plan details, limits, or status. |
/dashboard/users | Super Admin | Global Users | Searchable list of ALL users. Actions: Ban, Reset Password, View Audit Trail. |
/dashboard/tenants | Super Admin | Global Tenants | List of organizations. Plan overrides, Feature flags management. |
/dashboard/finance | Finance | Subscription Overview | Subscription status, Stripe sync health. |
/dashboard/system/queues | Ops | Queue Health Monitor | Custom UI for hybrid PostgreSQL + Redis queue system. Job retry controls. |
/dashboard/system/logs | Ops | System Logs | Log viewer (Elasticsearch/ClickHouse interface) (Future/2026 Spike). |
/admin/secrets | Super Admin | Vault Secrets Management | Centralized secrets management for all tenants. Vault health monitoring, SSH keys, SMTP credentials, API keys, DKIM keys. Bulk rotation and audit log viewer. |
4. Detailed View Descriptions
/dashboard/admin/plans - Plan Management
User Story: "As a product manager, I want to manage subscription plans and pricing without code changes, so I can launch new tiers for Black Friday."
What Youâll Find:
Plans Table
-
Columns: Name, Slug, Price (Monthly/Yearly), Stripe Product ID, Status (Active/Inactive), Subscribers, Actions.
- Status Indicators:
- Green: Active (Publicly purchasable)
- Grey: Inactive (Hidden from new customers, but existing subscribers can renew)
- Actions:
- "Create New Plan" Button: Navigates to plan creation form
- Row Actions: Edit plan details, Toggle active status
User Journey Context: Product launches and pricing strategy management.
Related Documentation:
Technical Integration:
- Stripe Product Sync: Plans store
stripe_product_idto generate checkout links - Feature Gating: Plans table defines tenant limits (max emails, max users, etc.)
- Cache Invalidation: Updates trigger cache invalidation for public-facing pricing pages
/dashboard/admin/plans/[id] - Edit Plan
User Story: "As an admin, I want to update feature limits for the Pro plan or deactivate a seasonal plan."
What Youâll Find:
Plan Details Form
- General Info:
- Name (e.g., âPro Planâ)
- Slug (e.g., âproâ, used in URLs)
- Description (marketing copy)
- Stripe Mapping:
stripe_product_id(Required): Links to Stripe Product- Note: Prices managed in Stripe, but displayed here for reference (
price_monthly,price_yearly)
- Feature Limits:
- Max Users per tenant
- Max Domains per tenant
- Max Campaigns/Month
- Max Emails/Month
- Storage Limit (GB)
- Feature Flags:
- API Access enabled
- Priority Support
- White Label branding
- Advanced Analytics
- Lifecycle Control:
- Is Active Toggle: Controls visibility in purchase UI (inactive plans hidden from new customers)
Validation Rules:
slugmust be unique across all plansstripe_product_idformat validation- Feature limits must be positive integers
User Journey Context: Plan configuration and lifecycle management.
Related Documentation:
Technical Integration:
- Database:
planstable in OLTP database - Cache Strategy: Heavily cached for public pages, admin updates invalidate cache tags
- Webhooks: Stripe product updates can sync back to PenguinMails
/dashboard/users - Global User Management
User Story: âAs a support admin, I want to quickly look up any user, view their account details, and review their audit trail to debug issues, so I can resolve tickets faster.â
What Youâll Find:
Search & Filter
-
Global Search Bar (Prominent):
-
Placeholder: âSearch by email, name, or user IDâ.
-
Autocomplete: Shows results as you type.
-
-
Filters:
-
Role: All, Owner, Admin, Member.
-
Status: Active, Suspended, Deleted.
-
Plan: Free, Pro, Enterprise.
-
Users Table
-
Columns: UserID, Name, Email, Plan, Tenant, Status, Created Date, Last Login, Actions.
-
Color Coding:
-
Suspended users: Red background.
-
Churned users (plan expired): Orange.
-
-
Row Actions (Gear icon):
-
View Details: Opens modal with full user profile, activity log.
-
View Audit Trail: Opens comprehensive audit viewer.
-
Audit Viewer Modal: Shows complete user action history with filters.
-
Searchable Timeline: Logins, campaign actions, settings changes, API calls.
-
Export Capability: Download audit trail as CSV for detailed analysis.
-
-
Reset Password: Sends reset email.
-
Suspend Account: Confirmation modal, reason required.
-
Revoke All Sessions: Immediate token invalidation (Security).
-
Change Role: Promote/demote user (e.g., Member â Admin).
-
Delete Account (GDPR): Hard delete, irreversible.
-
Audit Trail Viewer
-
Modal or Slide-over when clicking âView Audit Trailâ:
-
Activity Timeline: Logins, Campaign Creates, Settings Changes, API Calls.
-
Support Access Log: Admin views and support ticket references.
-
Filters: Date range, action type, IP address.
-
Search: Full-text search across all audit entries.
-
Export: Download filtered results as CSV.
-
[!NOTE] Database Schema: References audit log table from database documentation (verification needed - see Phase 4). API Endpoint: Requires executive/platform API endpoint for audit trail retrieval (verification needed - see Phase 4).
User Journey Context: Reactive (support-driven). Must be fast and auditable.
Related Documentation:
Technical Integration:
-
Audit Trail: Comprehensive logging of all user actions with retention policy.
-
Search: Elasticsearch for fast full-text search across millions of users and audit entries.
-
Database Reference: Audit log table schema (to be verified in Phase 4).
-
API Reference: Executive/Platform API audit trail endpoint (to be verified in Phase 4).
/dashboard/tenants - Tenant (Organization) Management
User Story: âAs a platform admin, I want to manage tenant accounts, override plans, and enable beta features, so I can support sales and customer success.â
What Youâll Find:
Tenants Table
-
Columns: Tenant ID, Company Name, Owner Email, Plan, MRR, Workspaces, Users, Status, Created, Actions.
-
MRR Column: Monthly Recurring Revenue (sortable).
-
Filters:
-
Plan: All, Free, Pro, Enterprise.
-
Status: Active, Trial, Churned.
-
Row Actions
-
View Details: Opens tenantâs workspace overview and audit trail in read-only mode.
-
Edit Plan:
-
Modal: Override plan (e.g., upgrade to Enterprise, add custom limits).
-
âApply Custom Pricingâ Checkbox: For negotiated deals.
-
-
Feature Flags:
-
Modal: List of beta features with toggles.
-
Example: âEnable Advanced Analyticsâ, âAllow 100k Emails/monthâ.
-
-
Billing Override:
- Comps (free service), Extended trial, Custom billing cycle.
Quick Actions (Top Bar)
- âCreate Test Tenantâ Button: Provisions sandbox account for demos.
User Journey Context: Account management and sales support.
Related Documentation:
Technical Integration:
-
Feature Flags: LaunchDarkly or internal flags table.
-
Plan Overrides: Stored in
tenant_overridestable, checked before billing.
/dashboard/finance - Subscription Overview
User Story: âAs a finance admin, I want to monitor subscription status and access Stripe Dashboard for revenue analytics.â
What Youâll Find:
Subscription Summary (see Analytics UI Patterns)
-
Basic Metrics:
-
Active Subscriptions: 234.
-
Plan Distribution: Free (45), Pro (150), Enterprise (39).
-
Stripe Dashboard Link: âView MRR and Revenue Analytics in Stripeâ button.
-
-
Quick Links:
-
Open Stripe Dashboard: Opens Stripe revenue section in new tab.
-
View All Subscriptions in Stripe: Direct link to Stripe subscriptions list.
-
Stripe Webhook Status
-
Last Webhook: â5 minutes agoâ.
-
Webhook Health:
-
Healthy / Delayed / Error indicator.
-
Last event type:
invoice.paid,subscription.updated, etc. -
Failed payments count: 3 subscriptions with payment issues.
-
-
Stripe Links:
-
âView Payment Details in Stripeâ button.
-
âView Failed Payments in Stripeâ link.
-
Stripe Dashboard Access
-
Quick Actions:
-
âOpen Stripe Dashboardâ: Opens Stripe in new tab.
-
âForce Sync Transactionâ: Input Invoice ID to pull latest status from Stripe.
-
âView MRR Reportsâ: Direct link to Stripe revenue section.
-
âDownload Invoicesâ: Link to Stripe invoice list.
-
âExport Revenue Dataâ: Link to Stripe data export tools.
-
[!NOTE] All detailed financial analytics (MRR trends, revenue forecasting, invoice management, payment history) are handled in Stripe Dashboard.
User Journey Context: Monthly financial overview and Stripe integration monitoring.
Related Documentation:
Technical Integration:
-
Stripe API: Read-only access for subscription list and webhook status
-
Subscription Count: Simple query from
subscriptionstable (status = 'active') -
No Complex Calculations: MRR, revenue trends, and analytics handled by Stripe
/dashboard/system/queues - Background Job Monitoring
User Story: âAs an ops engineer, I want to monitor the hybrid PostgreSQL + Redis job queues for failures and delays, so I can ensure system reliability.â
What Youâll Find:
Queue Dashboard
Custom UI for Hybrid Queue System
-
Queue List (PostgreSQL + Redis monitoring):
-
Columns: Queue Name, Active Jobs, Waiting, Completed (last hour), Failed, Actions.
-
Queue Names:
queue:email-sending:high,queue:email-sending,queue:email-sending:low,queue:analytics:daily-aggregate,queue:warmup:process, etc.
-
-
Per-Queue Actions:
-
View Details: Shows job list.
-
Pause Queue: Emergency stop.
-
Resume Queue.
-
Job Details (Click on failed job)
-
JSON Viewer:
-
Shows job data (e.g., campaign ID, recipient list).
-
Error stack trace.
-
-
Actions:
-
Retry Job: Re-queues the job.
-
Delete Job: Removes from queue.
-
User Journey Context: Reactive troubleshooting. Accessed during incidents.
Related Documentation:
Technical Integration:
-
Hybrid Architecture: PostgreSQL for durable state + Redis for fast processing.
-
Monitoring: Real-time queue depth tracking and job status monitoring.
-
Database Tables:
jobs,job_queues,job_logs(reference to be verified in Phase 4). -
API Endpoint: Executive/Platform API queue monitoring endpoint (to be verified in Phase 4).
-
Alerting: PagerDuty integration for critical failures.
/dashboard/system/infrastructure - System Health Monitoring
User Story: âAs an ops engineer, I want a real-time view of server health and IP reputation, so I can detect and resolve issues before they impact users.â
What Youâll Find:
Service Health Grid (see Analytics UI Patterns)
-
Status Cards (Traffic light):
-
API Server: Healthy (Response time: 120ms).
-
SMTP Service: Degraded (Queue backlog: 5,000 emails).
-
Database (OLTP): Healthy.
-
Database (OLAP): Healthy.
-
IP Reputation Monitor
-
Table: IP Address, Provider, Reputation Score, Blacklists, Daily Volume, Status.
-
Alerts: âIP 203.0.113.12 listed on Spamhaus (detected 2 hours ago)â.
Infrastructure Alerts
-
Alert Feed (Last 24 hours):
-
Timestamp, Severity, Service, Message.
-
Example: âERROR SMTP Queue size exceeded 10k thresholdâ.
-
User Journey Context: Proactive monitoring. Reviewed multiple times daily.
Related Documentation:
Technical Integration:
- Prometheus + Grafana: Metrics collection and visualization (Future/2026 Spike).
-
ClickHouse: Stores historical metrics (Future/2026 Spike).
- PagerDuty: Alerts for critical issues.
/dashboard/system/logs - System Log Viewer
User Story: âAs a developer debugging a production issue, I want to search and filter application logs, so I can trace errors to their source.â
What Youâll Find:
Log Search Interface
-
Search Bar:
-
Placeholder: âSearch logs (e.g., errors, user email, request ID)â.
-
Supports regex.
-
-
Filters (Sidebar):
-
Level: Error, Warning, Info, Debug.
-
Service: API, SMTP, Queue, Web.
-
Time Range: Last hour, Last 24 hours, Custom.
-
Log Results
-
Table or List View:
-
Columns: Timestamp, Level, Service, Message, User/Request ID.
-
Color Coding: Errors (Red), Warnings (Yellow).
-
-
Expandable Rows:
- Click to see full log entry with metadata (stack trace, context).
Export
- âExport to CSVâ Button: For further analysis.
User Journey Context: Debugging production issues. High-stress, time-sensitive.
Related Documentation:
Technical Integration:
- Elasticsearch: Centralized log aggregation (Future/2026 Spike).
- Sentry: Error tracking and alerting (linked from error logs) (Future/2026 Spike).
/admin/secrets - Vault Secrets Management
User Story: âAs a platform admin, I want to monitor Vault health and manage tenant secrets centrally, so I can ensure secure credential storage and respond quickly to security incidents.â
What Youâll Find:
Vault Health Dashboard
-
Status Cards (Traffic light):
-
Vault Seal Status: Unsealed (Green) / Sealed (Red).
-
Active Node: vault-node-1 (Primary).
-
Storage Backend: PostgreSQL - Healthy.
-
Last Backup: 2 hours ago (Green) / 25 hours ago (Yellow warning).
-
Backup Health: Healthy / Warning / Critical.
-
-
Quick Actions:
-
âForce Backup Nowâ Button: Manually trigger Vault snapshot.
-
âView Backup Historyâ Link: Shows last 30 backups with restore points.
-
Tenant Secrets Overview
-
Search Bar:
-
Placeholder: âSearch by tenant ID, tenant name, or VPS IPâ.
-
Autocomplete with tenant suggestions.
-
-
Filters:
-
Secret Type: All, SSH Keys, SMTP Credentials, API Keys, DKIM Keys.
-
Status: Active, Expired, Revoked.
-
Rotation Due: Next 7 days, Next 30 days, Overdue.
-
-
Tenants Table:
-
Columns: Tenant ID, Tenant Name, VPS IP, SSH Key Status, SMTP Status, API Keys Count, DKIM Keys Count, Last Rotation, Actions.
-
Color Coding:
-
Expired secrets: Red background.
-
Rotation due soon: Yellow background.
-
Healthy: Green indicator.
-
-
Secret Details View (Click tenant row to expand)
-
SSH Keys Section:
-
Admin SSH Key: Status (Active/Expired), Last Rotated, Next Rotation, Key Fingerprint.
-
Tenant SSH Key: Status, Last Rotated, Next Rotation, Key Fingerprint, Last Downloaded.
-
Actions: âRotate Nowâ, âView Rotation Historyâ.
-
-
SMTP Credentials Section:
-
Admin Username: Display masked username (e.g.,
admin@*****.com). -
Webmail URL: Display full URL (e.g.,
https://mail.example.com). -
Last Rotated: Timestamp (e.g., â2025-07-15 10:00:00 UTCâ).
-
Next Rotation: 180 days from last rotation (e.g., â2026-01-15 10:00:00 UTCâ).
-
Rotation Status: Color-coded indicator (Green: Healthy, Yellow: Due soon, Red: Overdue).
-
Actions:
-
âView Credentialsâ Button: Requires re-authentication (password + 2FA).
-
Opens secure modal with time-limited access (15 minutes).
-
Password initially masked (click eye icon to reveal).
-
Copy to clipboard button with confirmation.
-
Countdown timer showing expiration.
-
Auto-hide credentials after 15 minutes.
-
-
âRotate Nowâ Button: Manual rotation with reason input.
-
âEmergency Resetâ Button: For security incidents (requires incident ID).
-
âView Audit Trailâ Link: Shows all credential access events.
-
-
-
API Keys Section:
-
Table: Key ID, Permissions, Rate Limit, Created, Last Used, Request Count, Status.
-
Actions: âRevoke Keyâ, âView Usage Analyticsâ.
-
-
DKIM Keys Section:
-
Table: Domain, Selector, Last Rotated, Next Rotation (365 days), Status.
-
Actions: âRotate Nowâ, âView DNS Recordsâ.
-
Rotation Management
-
Bulk Rotation Panel:
-
âRotate All SSH Keysâ Button: Triggers rotation for all tenants (confirmation required).
-
âRotate All SMTP Credentialsâ Button: Bulk SMTP rotation.
-
âRotate Overdue Secretsâ Button: Rotates only secrets past rotation date.
-
-
Rotation Schedule Configuration:
-
SSH Keys: 90 days (default), Custom (30-365 days).
-
SMTP Credentials: 180 days (default), Custom.
-
DKIM Keys: 365 days (default), Custom.
-
-
Grace Period Settings:
-
SSH Keys: 24 hours (both old and new keys valid).
-
DKIM Keys: 48 hours (DNS propagation time).
-
SMTP Credentials Viewing Modal
Triggered by: Clicking âView Credentialsâ button in SMTP Credentials Section.
Security Requirements:
-
Re-authentication Required: Admin must enter password + 2FA code.
-
Time-Limited Access: Credentials visible for 15 minutes only.
-
Audit Logging: All credential views logged with timestamp, user, and IP address.
Modal Components:
-
Re-authentication Step:
-
Password Input: âEnter your password to continueâ.
-
2FA Code Input: âEnter your 2FA codeâ.
-
âVerifyâ Button: Validates credentials.
-
Error Handling: âInvalid credentials. Please try again.â
-
-
Credentials Display (After successful re-authentication):
-
Header: âSMTP Admin Credentials - Tenant: {tenant_name}â.
-
Expiration Timer: âCredentials expire in 14:32â (countdown).
-
Warning Banner: ââ ď¸ These credentials provide full access to the tenantâs email infrastructure. Handle with care.â
-
Credential Fields:
-
Username:
admin@example.com(plain text, copyable). -
Password:
â˘â˘â˘â˘â˘â˘â˘â˘â˘â˘â˘â˘â˘â˘â˘â˘(masked by default).-
Eye Icon Button: Click to reveal password.
-
Copy Button: Copy password to clipboard (shows âCopied!â confirmation).
-
-
Webmail URL:
https://mail.example.com(clickable link, opens in new tab).
-
-
Metadata:
-
Created: â2025-01-15 10:00:00 UTCâ.
-
Last Rotated: â2025-07-15 10:00:00 UTCâ.
-
Next Rotation: â2026-01-15 10:00:00 UTCâ.
-
-
Actions:
-
âCloseâ Button: Closes modal immediately.
-
âRotate Nowâ Button: Triggers manual rotation (confirmation required).
-
âEmergency Resetâ Button: For security incidents (requires incident ID).
-
-
-
Auto-Hide Behavior:
-
After 15 minutes, modal automatically closes.
-
Display warning at 1 minute remaining: âCredentials will expire in 1 minuteâ.
-
After expiration, show message: âCredentials expired. Please re-authenticate to view again.â
-
Implementation Notes:
-
API Endpoint:
GET /api/v1/platform-admin/tenants/{tenant_id}/smtp-credentials. -
Re-auth Token: Generated on successful re-authentication, valid for 15 minutes.
-
Audit Event:
smtp_credentials_viewedlogged with tenant_id, admin_user_id, timestamp, ip_address.
Audit Log Viewer
-
Real-time Audit Stream:
-
Columns: Timestamp, Action, Tenant, User, Secret Type, IP Address, Status.
-
Actions: read, write, delete, rotate, download.
-
Auto-refresh: Every 5 seconds.
-
-
Filters:
-
Tenant: Select from dropdown.
-
Secret Type: SSH, SMTP, API Keys, DKIM.
-
Action: Read, Write, Delete, Rotate, Download.
-
Date Range: Last hour, Last 24 hours, Last 7 days, Custom.
-
User: Filter by admin user who performed action.
-
-
Suspicious Activity Alerts:
-
Alert Banner: ââ ď¸ 5 failed authentication attempts detected in last 5 minutesâ.
-
Alert Types:
-
Multiple failed authentication attempts (>5 in 5 minutes).
-
Access to secrets outside normal hours (2am-6am).
-
Bulk secret reads (>100 secrets in 1 minute).
-
Secret deletion without prior approval.
-
-
-
Export Audit Logs:
-
âExport to CSVâ Button: Download filtered audit logs.
-
âExport to JSONâ Button: For programmatic analysis.
-
User Journey Context: Proactive security monitoring and reactive incident response.
Related Documentation:
-
Vault Integration Architecture - Detailed route specification
-
Vault SSH Management Feature - Feature documentation
Technical Integration:
-
HashiCorp Vault: Centralized secrets storage with KV v2 engine.
-
Vault API: All secret operations via Vault REST API.
-
Access Control: Role-based policies (admin full access, tenant read-only).
-
Audit Logging: All Vault operations logged to audit device (file + syslog).
-
Backup System: Automated daily snapshots to S3 with AES-256-GCM encryption.
-
Monitoring: Prometheus metrics for Vault health, PagerDuty alerts for critical issues.
-
Database Reference: Vault uses PostgreSQL storage backend for HA.
-
API Endpoints:
-
GET /api/v1/admin/vault/health- Vault health status. -
GET /api/v1/admin/secrets/tenants- List all tenant secrets. -
GET /api/v1/admin/secrets/tenant/{tenant_id}- Tenant secret details. -
POST /api/v1/admin/secrets/rotate-all- Bulk rotation. -
GET /api/v1/admin/vault/audit-logs- Retrieve audit logs.
-
Admin-Specific UI Theme (Future / Post-MVP)
User Story: âAs an admin, I want a visually distinct interface, so I always know when Iâm in admin mode and avoid accidental changes.â
Visual Differences:
-
Color Scheme: Dark orange accent (vs. blue for users).
-
Sidebar Header: âAdmin Panelâ label.
-
Context Indicator: Banner showing current admin context (e.g., âViewing as Adminâ).
Related Documentation:
5. Related API Endpoints
| Route | Related API | Description |
|---|---|---|
/dashboard/admin/plans | Plans API | GET /api/v1/platform/admin/plans (List), POST (Create), PUT /{id} (Update). |
/users | Admin API | GET /api/v1/platform/admin/users (List), GET .../audit (Audit Trail). |
/tenants | Admin API | GET /api/v1/platform/admin/tenants (List), PATCH (Overrides). |
/finance | Subscriptions API | GET /api/v1/platform/subscriptions/mrr (Revenue stats). |
/system/queues | Queue API | GET /api/v1/queue/stats (Monitor), POST .../retry (Actions). |
/admin/secrets | Vault Admin API | GET /api/v1/admin/vault/health (Health), GET /api/v1/admin/secrets/tenants (List), POST /api/v1/admin/secrets/rotate-all (Bulk rotation), GET /api/v1/admin/vault/audit-logs (Audit). |
6. Data Strategy
-
Fetching Method:
-
Tables (Users/Tenants): Server Components with searchParams.
-
Real-time Dashboards (Queues/Logs): Client Components with polling (every 5s) or WebSocket.
-
-
Caching:
-
Plan Data: Heavily cached for public-facing pages. Admin updates invalidate cache tags (
plans-list,plan-{slug}). -
Aggregated Metrics (MRR): Cached for 1 hour.
-
Logs: No caching (live stream).
-
-
Pagination:
- Offset-based for admin tables (need âJump to page Xâ).
-
Access Control:
- Strict RBAC:
- Access guarded by
staff_memberstable (distinct from tenant users). - Checks on every data fetch (Super Admin vs Support vs Finance).
- Access guarded by
- Strict RBAC:
7. Edge Cases & Error Handling
-
Tenant Not Found: Accessing
/tenants/[id]with invalid ID â 404 Page. -
Insufficient Permissions: Support role accessing Finance dashboard â 403 Forbidden.
-
Queue Action Failures: If âRetry All Failed Jobsâ partially fails, show âRetried 45/50. 5 jobs still stuck.â
-
Log Stream Overflow: If logs exceed buffer, show âLogs truncated. Download full logs?â with export link.
8. Component Architecture
Page Components
-
AdminDataTable(Server/Client)-
Generic table with sorting, filtering, and bulk actions.
-
Props:
data: T[],columns: ColumnDef<T>[].
-
-
QueueMonitor(Client)-
Features: Real-time polling of job counts, âRetryâ actions.
-
Sub-components:
QueueCard,JobList.
-
-
LogViewer(Client)- Features: Virtualized scroll, regex search, âFollow tailâ mode.
Shared Components
-
JSONViewer: For inspecting job payloads and audit logs. -
StatusDot: Real-time health indicator (Green/Red/Blinking).