A modern, responsive React dashboard for managing Discord ban appeals. Built with Vite, React, TypeScript, and Tailwind CSS.
- 🔐 Discord OAuth2 Authentication
- 📊 Server Management Dashboard
- 📋 Ban Appeal Management
- ✅ Appeal Approval/Denial System
- 💬 Appeal Response Messages
- 🎨 Modern Dark Theme UI
- ⚡ Fast Performance with Vite
- 📱 Fully Responsive Design
- Frontend: React 18, TypeScript, Vite
- Styling: Tailwind CSS
- Routing: React Router v6
- HTTP Client: Axios
- Icons: Lucide React
- Authentication: Discord OAuth2
- Node.js 16+ and npm/yarn
- DBAB API running on http://localhost:3000
- DBAB Bot with OAuth2 configuration
- Discord Application with OAuth2 setup
-
Install dependencies:
npm install
-
Create environment file:
cp .env.example .env.local
-
Configure Discord OAuth in your API's config file:
- Ensure your Discord app has a redirect URI set to
http://localhost:5173/auth/discord/callback - The API will provide the Discord auth URL via the
/auth/discord-auth-urlendpoint
- Ensure your Discord app has a redirect URI set to
-
Update your DBAB API to include Discord OAuth endpoints:
GET /auth/discord-auth-url- Returns the Discord authorization URLPOST /auth/discord-callback- Handles Discord OAuth callback and returns JWT tokenGET /auth/me- Returns current user information
npm run devThe dashboard will be available at http://localhost:5173
npm run buildDistributable files will be in the dist/ folder.
src/
├── components/ # Reusable components
├── contexts/ # React contexts (Auth)
├── pages/ # Page components
├── services/ # API service calls
├── App.tsx # Main app component
├── App.css # App-level styles
├── index.css # Global styles
└── main.tsx # Vite entry point
The dashboard communicates with the DBAB API via REST. Ensure your API implements these endpoints:
GET /auth/discord-auth-url- Get Discord OAuth URLPOST /auth/discord-callback- Handle OAuth callbackGET /auth/me- Get current user
GET /appeals- Get all appealsGET /appeals/{guildId}- Get guild appealsGET /appeals/detail/{appealId}- Get appeal detailsPUT /appeals/{appealId}- Update appeal status
GET /guilds- Get user's guildsGET /guilds/{guildId}- Get guild detailsGET /guilds/{guildId}/stats- Get guild statistics
See .env.example for all available variables:
VITE_API_URL- URL of the DBAB API (default: http://localhost:3000)
The dashboard uses Tailwind CSS with custom color variables for a Discord-themed dark mode. Colors are defined in:
tailwind.config.js- Tailwind configurationsrc/index.css- CSS custom properties
- User clicks "Login with Discord"
- Redirected to Discord OAuth authorization
- User authorizes and is redirected back to
/auth/discord/callback - JWT token and user data are stored in localStorage
- User can now access protected dashboard routes
Feel free to submit issues and enhancement requests!
See parent repository for license information.