Administration dashboard for the Beep infrastructure, built with React, TypeScript, and modern web technologies.
This administration panel provides a centralized interface for platform administrators to monitor activity, manage users and servers, and ensure moderation and platform stability.
The admin panel gives administrators:
- A global view of the platform's activity and health
- Powerful moderation tools for managing users and servers
- Clear analytics to support decision-making
- Tools to maintain a safe and healthy environment for users
- Frontend: React 19 + TypeScript
- UI Library: shadcn/ui with Radix UI primitives
- Styling: Tailwind CSS 4
- Routing: TanStack Router
- i18n: i18next (English, French)
- Backend Services: Rust microservices (User, Community, Message services)
- Node.js 22.21+
- pnpm 9.0+ (package manager)
-
Install dependencies:
pnpm install
-
Start the development server:
pnpm dev
The admin panel will be available at http://localhost:5173
# Build for production
pnpm build
# Preview production build
pnpm previewsrc/
├── app/ # Global app configuration
│ ├── providers/ # React providers
│ │ ├── ThemeProvider.tsx # Light/Dark theme context
│ │ └── SidebarContentProvider.tsx
│ └── styles/
│ ├── globals.css # Global styles + Tailwind
│ └── themes.css # CSS variables for themes
│
├── routes/ # TanStack Router (file-based routing)
│ ├── __root.tsx # Root layout with sidebar
│ ├── index.tsx # Dashboard page
│ └── users.tsx # Users management page
│
├── shared/ # Shared code
│ ├── components/
│ │ ├── ui/ # Shadcn UI components
│ │ │ ├── Avatar.tsx
│ │ │ ├── DropdownMenu.tsx
│ │ │ ├── Sidebar.tsx
│ │ │ └── ...
│ │ └── SidebarSettingsMenu.tsx
│ ├── lib/
│ │ ├── api.ts # API client configuration
│ │ └── utils.ts # Utilities
│ ├── types/
│ │ └── index.ts # Global types
│ └── constants/
│ └── index.ts # Global constants
│
├── assets/ # Static assets
├── i18n.ts # i18n configuration
├── main.tsx # Vite entry point
└── vite-env.d.ts
│
public/
├── locales/ # Translation files
│ ├── en.json # English translations
│ └── fr.json # French translations
The dashboard provides a high-level overview of the platform's activity and health.
Key Metrics:
- Users: Total count, active users, and growth over time (User Service)
- Servers: Total number of communities (Community Service)
- Messages: Message volume by period (Message Service)
- System Health: Service status, API response times, and scaling information
Browse and search registered users with advanced filtering.
Features:
- Search by:
- Username
- User ID
- Paginated user list
- Display information:
- Username
- Account status
- Registration date
Detailed view of a specific user with all account information.
Information:
- User ID (UUID)
- Username and email
- Account creation date
- Account status (active, banned, suspended)
- Associated servers
- Ban a user
- Reactivate an account
- Delete an account
- Reset user password
- Bulk actions (ban/suspend multiple users)
Manage all servers (communities) on the platform.
Features:
- Search by:
- Server name
- Server ID
- Administrator
- Display:
- Server name
- Administrator
- Member count
- Creation date
Comprehensive server information.
Information:
- Server name and ID
- Administrator details
- Member count
- Creation date
- Text and voice channels
- Members list
- Roles configuration
- Delete a server
- Temporarily disable/reactivate a server
- Create/delete channels
- Remove members
- Modify server roles
- Change server administrator
Track and manage platform moderation.
Lists:
- Banned users
- Disabled servers
- Unban users
- Reactivate servers
- Review moderation logs
Create a .env file in the project root with the following variables:
# Keycloak Authentication
VITE_KEYCLOAK_CLIENT_ID=admin
VITE_KEYCLOAK_AUTHORITY=http://localhost:8080/realms/myrealm
# Microservices URLs
VITE_USER_SERVICE_URL=http://localhost:3000
VITE_COMMUNITY_SERVICE_URL=http://localhost:3003| Variable | Description | Example |
|---|---|---|
VITE_KEYCLOAK_CLIENT_ID |
Keycloak client ID for admin | admin |
VITE_KEYCLOAK_AUTHORITY |
Keycloak realm URL | http://localhost:8080/realms/myrealm |
VITE_USER_SERVICE_URL |
User service API URL | http://localhost:3000 |
VITE_COMMUNITY_SERVICE_URL |
Community service API URL | http://localhost:3003 |
This project uses Prettier for consistent code formatting.
Auto-format on save in VS Code:
- Install the Prettier - Code formatter extension
- Set as default formatter (VS Code Settings → Default Formatter → Prettier)
- Enable "Format On Save"
Manual formatting:
pnpm run formatAdd new shadcn UI components with:
pnpm add-component <component-name>- React 19.2.3 - UI library
- TypeScript 5.9 - Type safety
- TanStack Router 1.153 - File-based routing
- Tailwind CSS 4.1 - Styling
- Shadcn/UI - Component library
- Radix UI - Accessible components
- i18next - Internationalization
- Vite - Build tool and dev server
# Build the Docker image
docker build -t beep-admin .
# Run the container
docker run -d --rm -p 8080:8080 beep-adminThe admin panel will be available at http://localhost:8080
- Create feature branches from
main - Follow the existing code structure
- Format code with Prettier before committing
- Use conventional commit messages (feat:, fix:, style:, etc.)
See LICENSE file in the repository root.