Skip to content

ArthurP-fr/Flint

Repository files navigation

🚀 Flint — Discord Bot SaaS Platform (Multi-Tenant)

Flint est une plateforme SaaS permettant de gérer et orchestrer plusieurs bots Discord depuis une seule infrastructure scalable.

Elle repose sur une architecture multi-tenant, sécurisée et conçue pour supporter une montée en charge horizontale.


🧠 Concept

Au lieu de :

❌ 1 bot = 1 container

Flint utilise :

✅ 1 bot manager = N bots dynamiques


🏗️ Architecture globale

/apps
  web        → Dashboard Next.js (UI SaaS)
  api        → Backend (OAuth2 Discord + JWT + API multi-tenant)
  bot        → Bot manager (runtime multi-bots Discord)
/packages
  shared     → Types, crypto, Redis helpers
/database
  migrations → Schéma PostgreSQL versionné

⚙️ Stack technique

  • Frontend : Next.js (App Router) + TailwindCSS
  • Backend : Node.js + Express
  • Bot runtime : Discord.js multi-instances
  • DB : PostgreSQL 16
  • Queue : Redis + BullMQ
  • Infra : Docker Compose

🤖 Architecture runtime

API (apps/api)

  • OAuth2 Discord login

  • JWT httpOnly session

  • API multi-tenant complète

  • Gestion des bots :

    • create / start / stop / restart
  • Chiffrement AES-256-GCM des tokens Discord

  • Rate limiting par tenant

  • Queue de contrôle via BullMQ


Bot Manager (apps/bot)

  • Un seul service pour tous les bots
  • Gestion dynamique :
Map<botId, DiscordClient>
  • Worker Redis (BullMQ) :

    • start bot
    • stop bot
    • restart bot
  • Reconnexion automatique

  • Logs runtime en base


Web App (apps/web)

Dashboard SaaS :

  • Login Discord OAuth
  • Liste des bots du tenant
  • Création de bot via token
  • Contrôle runtime (start / stop / restart)
  • Interface multi-langue (i18n)

🗄️ Base de données

Multi-tenant strict

Tables principales :

  • tenants
  • users
  • bots
  • bot_runtime_events

Sécurité

  • Isolation totale via tenant_id
  • Tokens Discord chiffrés (AES-256-GCM)
  • Logs séparés par tenant

🔐 Sécurité

  • 🔒 Tokens bot jamais stockés en clair
  • 🍪 JWT en cookie httpOnly
  • 🧱 Isolation complète multi-tenant
  • ⚡ Rate limiting par tenant
  • 🧩 Redis namespaced
  • 🚫 Aucun bot exposé individuellement

🐳 Docker architecture

Services :

  • web
  • api
  • bot
  • postgres
  • redis

👉 Important : Aucun container par bot → tout est centralisé


🚀 Installation

1. Cloner le projet

git clone https://github.com/ArthurP-fr/Flint.git
cd Flint

2. Configurer l’environnement

cp .env.example .env

3. Générer clé de chiffrement

openssl rand -base64 32

4. Installer les dépendances

npm install

5. Lancer la stack

docker compose up -d --build

🌍 Accès


📡 API

Auth

  • GET /auth/discord/login
  • GET /auth/discord/callback
  • POST /auth/logout
  • GET /api/me

Bots

  • GET /api/bots
  • POST /api/bots
  • POST /api/bots/:botId/start
  • POST /api/bots/:botId/stop
  • POST /api/bots/:botId/restart

📈 Scalabilité

Flint est conçu pour être scalable horizontalement :

  • API → scalable horizontal
  • Bot manager → scalable avec Redis coordination
  • PostgreSQL → recommandé managé
  • Redis → central queue system

👉 Un seul bot service peut gérer des centaines de bots Discord


🖼️ Screenshots

Home

Dashboard Home

Bots

Bots List

Login

Create Bot


🎯 Objectif du projet

Flint vise à devenir une plateforme type :

“Discord Bot as a Service”

avec une architecture proche d’un SaaS moderne (Vercel / Stripe style backend design).


⭐ Points forts

  • Multi-tenant natif
  • Runtime dynamique de bots
  • Sécurité forte (chiffrement + isolation)
  • Queue distribuée (BullMQ + Redis)
  • Architecture scalable dès le départ

About

Template Discord.js avec commandes prefix & slash auto, components v2, help auto, multi-langue et variables dynamiques (ex: {{bot_latency}}).

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors