Skip to main content
The Volvox.Bot dashboard is a Next.js web application that lets server administrators manage every aspect of the bot without touching a config file. You log in with your Discord account and the dashboard shows only the servers where you have admin permissions.

Analytics

Message volume, AI usage, command stats, and engagement metrics with CSV and PDF export.

Audit log

Full action history with real-time WebSocket streaming and CSV/JSON export.

Conversations

Browse, search, and replay every AI conversation with per-message flagging.

Bot config

Edit every configuration key through a form-based editor backed by the API.

Accessing the dashboard

Before you open the dashboard you need three environment variables set on the web process.
1

Generate a secret

Run the following command and copy the output:
openssl rand -base64 48
Set this value as NEXTAUTH_SECRET. The secret must be at least 32 characters and must not contain placeholder text.
2

Create a Discord OAuth2 application

Go to the Discord Developer Portal, create an application, and open OAuth2. Add your dashboard URL as a redirect:
https://your-domain.com/api/auth/callback/discord
Copy the Client ID and Client Secret into your environment:
DISCORD_CLIENT_ID=your_client_id
DISCORD_CLIENT_SECRET=your_client_secret
3

Set the public URL

Tell NextAuth where the app is hosted:
NEXTAUTH_URL=https://your-domain.com
For local development use http://localhost:3000.
4

Start the dashboard

pnpm dev
Navigate to NEXTAUTH_URL and click Sign in with Discord. After authorizing, you land on the overview page.
The dashboard enforces authentication at both the middleware layer and the server layout. Unauthenticated requests are always redirected to /login.

Page structure and URL layout

Every dashboard page lives under /dashboard. The active server is tracked in application state and persists across page navigation.
URLSection
/dashboardAnalytics overview
/dashboard/audit-logAudit log
/dashboard/conversationsAI conversation list
/dashboard/conversations/:idSingle conversation replay
/dashboard/configBot config editor
/dashboard/moderationModeration actions
/dashboard/membersMember list and detail
/dashboard/aiAI chat settings
/dashboard/temp-rolesTemporary role assignments
/dashboard/ticketsSupport tickets
/dashboard/settingsDashboard settings
/dashboard/performancePerformance metrics
/dashboard/logsBot logs

Selecting a server

The sidebar contains a server picker. When you select a server, every page resets its data and fetches fresh content for that guild. You can only see servers where your Discord account has administrator permissions.

Themes

The dashboard supports dark and light themes powered by next-themes. The theme preference is stored locally and applied on load with no flash of unstyled content.

Mobile support

All pages are responsive. Tables collapse non-essential columns on small viewports, and the sidebar becomes a drawer on mobile. Filters and controls stack vertically on narrow screens.

Authentication session

Sessions use JWT strategy with a 7-day maximum age. Discord access tokens are refreshed automatically in the background when they expire. If the refresh fails, the dashboard redirects you to /login.
If BOT_API_URL is set without BOT_API_SECRET, requests to the bot API will be unauthenticated. Always set both variables in production.

Build docs developers (and LLMs) love