6.2 KiB
Aurora - Discord RPG Bot
A comprehensive, feature-rich Discord RPG bot built with modern technologies using a monorepo architecture.
Architecture Overview
Aurora uses a Single Process Monolith architecture that runs both the Discord bot and web dashboard in the same Bun process. This design maximizes performance by eliminating inter-process communication overhead and simplifies deployment to a single Docker container.
Monorepo Structure
aurora-bot-discord/
├── bot/ # Discord bot implementation
│ ├── commands/ # Slash command implementations
│ ├── events/ # Discord event handlers
│ ├── lib/ # Bot core logic (BotClient, utilities)
│ └── index.ts # Bot entry point
├── web/ # React web dashboard
│ ├── src/ # React components and pages
│ │ ├── pages/ # Dashboard pages (Admin, Settings, Home)
│ │ ├── components/ # Reusable UI components
│ │ └── server.ts # Web server with API endpoints
│ └── build.ts # Vite build configuration
├── shared/ # Shared code between bot and web
│ ├── db/ # Database schema and Drizzle ORM
│ ├── lib/ # Utilities, config, logger, events
│ ├── modules/ # Domain services (economy, admin, quest)
│ └── config/ # Configuration files
├── docker-compose.yml # Docker services (app, db)
└── package.json # Root package manifest
Main Application Parts
1. Discord Bot (bot/)
The bot is built with Discord.js v14 and handles all Discord-related functionality.
Core Components:
- BotClient (
bot/lib/BotClient.ts): Central client that manages commands, events, and Discord interactions - Commands (
bot/commands/): Slash command implementations organized by category:admin/: Server management commands (config, prune, warnings, notes)economy/: Economy commands (balance, daily, pay, trade, trivia)inventory/: Item management commandsleveling/: XP and level trackingquest/: Quest commandsuser/: User profile commands
- Events (
bot/events/): Discord event handlers:interactionCreate.ts: Command interactionsmessageCreate.ts: Message processingready.ts: Bot ready eventsguildMemberAdd.ts: New member handling
2. Web Dashboard (web/)
A React 19 + Bun web application for bot administration and monitoring.
Key Pages:
- Home (
/): Dashboard overview with live statistics - Admin Overview (
/admin/overview): Real-time bot metrics - Admin Quests (
/admin/quests): Quest management interface - Settings (
/settings/*): Configuration pages for:- General settings
- Economy settings
- Systems settings
- Roles settings
Web Server Features:
- Built with Bun's native HTTP server
- WebSocket support for real-time updates
- REST API endpoints for dashboard data
- SPA fallback for client-side routing
- Bun dev server with hot module replacement
3. Shared Core (shared/)
Shared code accessible by both bot and web applications.
Database Layer (shared/db/):
- schema.ts: Drizzle ORM schema definitions for:
users: User profiles with economy dataitems: Item catalog with rarities and typesinventory: User item holdingstransactions: Economy transaction historyclasses: RPG class systemmoderationCases: Moderation logsquests: Quest definitions
Modules (shared/modules/):
- economy/: Economy service, lootdrops, daily rewards, trading
- admin/: Administrative actions (maintenance mode, cache clearing)
- quest/: Quest creation and tracking
- dashboard/: Dashboard statistics and real-time event bus
- leveling/: XP and leveling logic
Utilities (shared/lib/):
config.ts: Application configuration managementlogger.ts: Structured logging systemenv.ts: Environment variable handlingevents.ts: Event bus for inter-module communicationconstants.ts: Application-wide constants
Main Use-Cases
For Discord Users
- Class System: Users can join different RPG classes with unique roles
- Economy:
- View balance and net worth
- Earn currency through daily rewards, trivia, and lootdrops
- Send payments to other users
- Trading: Secure trading system between users
- Inventory Management: Collect, use, and trade items with rarities
- Leveling: XP-based progression system tied to activity
- Quests: Complete quests for rewards
- Lootdrops: Random currency drops in text channels
For Server Administrators
- Bot Configuration: Adjust economy rates, enable/disable features via dashboard
- Moderation Tools:
- Warn, note, and track moderation cases
- Mass prune inactive members
- Role management
- Quest Management: Create and manage server-specific quests
- Monitoring:
- Real-time dashboard with live statistics
- Activity charts and event logs
- Economy leaderboards
For Developers
- Single Process Architecture: Easy debugging with unified runtime
- Type Safety: Full TypeScript across all modules
- Testing: Bun test framework with unit tests for core services
- Docker Support: Production-ready containerization
- Remote Access: SSH tunneling scripts for production debugging
Technology Stack
| Layer | Technology |
|---|---|
| Runtime | Bun 1.0+ |
| Bot Framework | Discord.js 14.x |
| Web Framework | React 19 + Bun |
| Database | PostgreSQL 17 |
| ORM | Drizzle ORM |
| Styling | Tailwind CSS v4 + ShadCN/Radix UI |
| Validation | Zod |
| Containerization | Docker |
Running the Application
# Database migrations
bun run migrate
# Production (Docker)
docker compose up
The bot and dashboard process run on port 3000 and are accessible at http://localhost:3000.