mirror of
https://github.com/arthur-pbty/flint.git
synced 2026-08-01 20:29:03 +02:00
2.0 KiB
2.0 KiB
AGENT.md - Guide SaaS Multi-Tenant
Version: 3.0
But
Decrire l'architecture cible du monorepo SaaS pour bot Discord multi-tenant.
Vue d'ensemble
- Stack backend: Node.js + TypeScript + Express + PostgreSQL + Redis + BullMQ.
- Bot runtime: Discord.js avec gestion dynamique multi-instance.
- Frontend: Next.js App Router.
- Structure: monorepo
apps/*+packages/*.
Organisation des dossiers
apps/api/- OAuth2 Discord, JWT cookie, routes multi-tenant, validation token bot, publication jobs BullMQ.
apps/bot/- BotManager dynamique (
Map<botId, Client>), worker de controle (start/stop/restart).
- BotManager dynamique (
apps/web/- Dashboard utilisateur (login, liste bots, ajout bot, actions runtime).
packages/shared/- Types partages, constantes queue, helpers Redis namespacing, chiffrement token AES-GCM.
database/migrations/- SQL versionne (
schema_migrations) avec schema multi-tenant.
- SQL versionne (
Principes d'architecture
- Multi-tenant strict:
- toutes les requetes de lecture/ecriture passent par
tenant_id. - tables critiques liees a
tenant_idet/ouowner_user_id.
- toutes les requetes de lecture/ecriture passent par
- Pas de secret en clair:
- token bot chiffre en DB (
token_ciphertext,token_iv,token_tag).
- token bot chiffre en DB (
- Controle runtime decouple:
- API publie des jobs, bot manager consomme et execute.
- Separation responsabilites:
- API: auth + orchestration.
- Bot: runtime Discord.
- Web: UX dashboard.
Conventions de code
- TypeScript strict.
- Exports nommes.
- Erreurs API explicites et codes HTTP coherents.
- Logs sans fuite de secrets.
Workflow recommande
- Ajouter/adapter migration SQL dans
database/migrations. - Adapter repositories API/Bot avec filtre tenant.
- Ajouter endpoint API + validation zod.
- Brancher action queue si runtime impacte.
- Mettre a jour le dashboard web.
- Valider
npm run typecheckpuisdocker compose up -d --build.
Securite
- Ne jamais committer
.env. - Garder
TOKEN_ENCRYPTION_KEYhors depot. - Appliquer
httpOnly+sameSitesur cookie session. - Eviter les logs de payloads sensibles (token, secrets).