diff --git a/README.md b/README.md index d1e6620..01671a9 100644 --- a/README.md +++ b/README.md @@ -7,24 +7,44 @@ ![Discord.js](https://img.shields.io/badge/Discord.js-14.x-5865F2) ![Drizzle ORM](https://img.shields.io/badge/Drizzle_ORM-0.30+-C5F74F) ![PostgreSQL](https://img.shields.io/badge/PostgreSQL-16-336791) +![React](https://img.shields.io/badge/React-19-61DAFB) Aurora is a powerful Discord bot designed to facilitate RPG-like elements within a Discord server. It features a robust economy, class system, inventory management, quests, and more, all built on top of a high-performance stack using Bun and Drizzle ORM. +**New in v1.0:** Aurora now includes a fully integrated **Web Dashboard** for managing the bot, viewing statistics, and configuring settings, running alongside the bot in a single process. + ## ✨ Features +### Discord Bot * **Class System**: Users can join different classes. * **Economy**: Complete economy system with balance, transactions, and daily rewards. -* **Inventory & Items**: sophisticated item system with rarities, types (Material, Consumable, etc.), and inventory management. +* **Inventory & Items**: Sophisticated item system with rarities, types (Material, Consumable, etc.), and inventory management. * **Leveling**: XP-based leveling system to track user activity and progress. * **Quests**: Quest system with requirements and rewards. * **Trading**: Secure trading system between users. * **Lootdrops**: Random loot drops in channels to engage users. * **Admin Tools**: Administrative commands for server management. +### Web Dashboard +* **Live Analytics**: View real-time activity charts (commands, transactions). +* **Configuration Management**: Update bot settings without restarting. +* **Database Inspection**: Integrated Drizzle Studio access. +* **State Monitoring**: View internal bot state (Lootdrops, etc.). + +## 🏗️ Architecture + +Aurora uses a **Single Process Monolith** architecture to maximize performance and simplify resource sharing. + +* **Unified Runtime**: Both the Discord Client and the Web Dashboard run within the same Bun process. +* **Shared State**: This allows the Dashboard to access live bot memory (caches, gateways) directly without complex inter-process communication (IPC). +* **Simplified Deployment**: You only need to deploy a single Docker container. + ## 🛠️ Tech Stack * **Runtime**: [Bun](https://bun.sh/) -* **Framework**: [Discord.js](https://discord.js.org/) +* **Bot Framework**: [Discord.js](https://discord.js.org/) +* **Web Framework**: [React 19](https://react.dev/) + [Vite](https://vitejs.dev/) (served via Bun) +* **Styling**: [Tailwind CSS v4](https://tailwindcss.com/) + [Radix UI](https://www.radix-ui.com/) * **Database**: [PostgreSQL](https://www.postgresql.org/) * **ORM**: [Drizzle ORM](https://orm.drizzle.team/) * **Validation**: [Zod](https://zod.dev/) @@ -74,12 +94,14 @@ Aurora is a powerful Discord bot designed to facilitate RPG-like elements within bun run db:push ``` -### Running the Bot +### Running the Bot & Dashboard **Development Mode** (with hot reload): ```bash bun run dev ``` +* Bot: Online in Discord +* Dashboard: http://localhost:3000 **Production Mode**: Build and run with Docker (recommended): @@ -87,27 +109,46 @@ Build and run with Docker (recommended): docker compose up -d app ``` +### 🔐 Accessing Production Services (SSH Tunnel) + +For security, the Production Database and Dashboard are **not exposed** to the public internet by default. They are only accessible via localhost on the server. + +To access them from your local machine, use the included SSH tunnel script. + +1. Add your VPS details to your local `.env` file: + ```env + VPS_USER=root + VPS_HOST=123.45.67.89 + ``` + +2. Run the remote connection script: + ```bash + bun run remote + ``` + +This will establish secure tunnels for: +* **Dashboard**: http://localhost:3000 +* **Drizzle Studio**: http://localhost:4983 + ## 📜 Scripts -* `bun run dev`: Start the bot in watch mode. +* `bun run dev`: Start the bot and dashboard in watch mode. +* `bun run remote`: Open SSH tunnel to production services. * `bun run generate`: Generate Drizzle migrations. * `bun run migrate`: Apply migrations (via Docker). -* `bun run db:push`: Push, schema to DB (via Docker). * `bun run db:studio`: Open Drizzle Studio to inspect the database. * `bun test`: Run tests. ## 📂 Project Structure ``` -├── src -│ ├── commands # Slash commands -│ ├── events # Discord event handlers -│ ├── modules # Feature modules (Economy, Inventory, etc.) -│ ├── db # Database schema and connection -│ └── lib # Shared utilities +├── bot # Discord Bot logic & entry point +├── web # React Web Dashboard (Frontend + Server) +├── shared # Shared code (Database, Config, Types) ├── drizzle # Drizzle migration files -├── config # Configuration files -└── scripts # Utility scripts +├── scripts # Utility scripts +├── docker-compose.yml +└── package.json ``` ## 🤝 Contributing