- AGENTS.md: Update project description from web dashboard to REST API - README.md: Replace Web Dashboard section with REST API, update tech stack - docs/main.md: Refactor Web Dashboard section to REST API documentation - web/README.md: Rewrite from React setup to API endpoint documentation All React/UI references removed - web is now API-only
6.0 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 REST API 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/ # REST API server
│ └── src/routes/ # API route handlers
├── 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. REST API (web/)
A headless REST API built with Bun's native HTTP server for bot administration and data access.
Key Endpoints:
- Stats (
/api/stats): Real-time bot metrics and statistics - Settings (
/api/settings): Configuration management endpoints - Users (
/api/users): User data and profiles - Items (
/api/items): Item catalog and management - Quests (
/api/quests): Quest data and progress - Economy (
/api/transactions): Economy and transaction data
API Features:
- Built with Bun's native HTTP server
- WebSocket support for real-time updates (
/ws) - REST API endpoints for all bot data
- Real-time event streaming via WebSocket
- Zod validation for all requests
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 API
- 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 statistics via REST API
- Activity data 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 | Bun HTTP Server (REST API) |
| Database | PostgreSQL 17 |
| ORM | Drizzle ORM |
| UI | Discord embeds and components |
| Validation | Zod |
| Containerization | Docker |
Running the Application
# Database migrations
bun run migrate
# Production (Docker)
docker compose up
The bot and API server run on port 3000 and are accessible at http://localhost:3000.