feat: introduce web dashboard with multi-bot management

- add Discord OAuth2 authentication
- allow users to register their bots via token
- implement dynamic bot start/stop system
- store bots in database (multi-tenant)
- replace single-bot env setup with scalable architecture
This commit is contained in:
Puechberty Arthur
2026-04-18 01:39:12 +02:00
parent 58376568c7
commit 3063796eb0
150 changed files with 6248 additions and 1387 deletions
+29 -24
View File
@@ -1,26 +1,31 @@
DISCORD_TOKEN=
DISCORD_CLIENT_ID=
DATABASE_URL=postgresql://discord_bot:CHANGE_ME_STRONG_PASSWORD@localhost:5432/discord_bots
DATABASE_SSL=false
DATABASE_SSL_REJECT_UNAUTHORIZED=true
DATABASE_SSL_CA=
ALLOW_INSECURE_DB_SSL=false
PRESENCE_STREAM_URL=https://twitch.tv/discord
POSTGRES_DB=discord_bots
POSTGRES_USER=discord_bot
NODE_ENV=development
# Shared infrastructure
POSTGRES_DB=discord_saas
POSTGRES_USER=discord_saas
POSTGRES_PASSWORD=CHANGE_ME_STRONG_POSTGRES_PASSWORD
REDIS_PASSWORD=CHANGE_ME_STRONG_REDIS_PASSWORD
POSTGRES_PORT=5432
PREFIX=+
DEFAULT_LANG=en
DEV_GUILD_ID=
AUTO_DEPLOY_SLASH=false
LOG_LEVEL=info
STATE_BACKEND=memory
REDIS_URL=
COMMAND_DISPATCH_MODE=local
COMMAND_QUEUE_NAME=bot:${botId}:command-jobs
GLOBAL_RATE_LIMIT_MAX_REQUESTS=20
GLOBAL_RATE_LIMIT_WINDOW_SECONDS=10
RATE_LIMIT_FAIL_OPEN=false
ENABLE_LEADER_ELECTION=true
REDIS_PASSWORD=CHANGE_ME_STRONG_REDIS_PASSWORD
DATABASE_URL=postgresql://discord_saas:CHANGE_ME_STRONG_POSTGRES_PASSWORD@localhost:5432/discord_saas
DATABASE_SSL=false
# OAuth2 + auth API
DISCORD_CLIENT_ID=
DISCORD_CLIENT_SECRET=
DISCORD_REDIRECT_URI=http://localhost:4000/auth/discord/callback
JWT_SECRET=CHANGE_ME_LONG_RANDOM_SECRET
JWT_EXPIRES_IN=7d
SESSION_COOKIE_NAME=saas_session
COOKIE_SECURE=false
WEB_URL=http://localhost:3000
API_BASE_URL=http://localhost:4000
# Encryption key for bot tokens (32 bytes base64)
TOKEN_ENCRYPTION_KEY=REPLACE_WITH_32_BYTE_BASE64_KEY
# Multi-tenant API limits
TENANT_RATE_LIMIT_MAX=120
TENANT_RATE_LIMIT_WINDOW_SECONDS=60
# Web
NEXT_PUBLIC_API_BASE_URL=http://localhost:4000