BotDiscordFactory
Flotte de bots Discord pour communautés de streameurs.
À PROPOS DU PROJET
Méta-workspace qui fédère une flotte de 4 bots Discord pour des communautés de streameurs (ReNamioos, Coverioos, Moodioos, Collabioos), 1 bot = 1 repo. Stack cible Bun + TypeScript + discord.js v14, API Fastify sous contrat publié (/health, /stats) supervisée par bdf-monitor, un projet Neon Postgres par bot, design system Astro (@bdf/design) et portail vitrine. Sites sur Vercel, bots sur VPS dark via Dokploy (aucun port entrant public, tailnet Tailscale).
ReNamioos, le bot pilote
Bot Discord en Bun, TypeScript et discord.js 14 qui transforme les pseudos en versions stylisées grâce à l'Unicode, avec huit styles de polices (cercles, cursive, gothique, gras, monospace, carrés, double, fullwidth). Commandes slash pour convertir un texte, renommer un membre, y compris pour une durée limitée avec retour automatique, ou tirer un style au hasard. C'est le bot pilote : son découpage sert de référence aux autres.
Auto-rename par rôle
Chaque serveur associe des rôles à des styles, configurés depuis Discord par un administrateur. Un membre qui gagne un rôle associé est renommé, et retrouve son pseudo d'origine quand il perd le dernier. L'ordre d'ajout fixe la priorité entre plusieurs rôles, un journal borné garde les dernières tentatives et chaque membre peut refuser le renommage automatique sur le serveur. La config est stockée dans Postgres Neon, avec un simple fichier JSON en développement.
Un gabarit pour démarrer un bot
Le template de la flotte est un squelette minimal : une commande /ping et l'API de supervision. Architecture hexagonale, domaine pur sans import de discord.js, port StatsProvider qui sépare l'API HTTP du client Discord. Une suite de tests de contrat sert de barrière d'entrée : tant qu'elle n'est pas verte, le bot n'est pas inscrit au monitoring. Image Docker non-root avec contrôle de santé.
Design system partagé
@bdf/design est un package Astro de tokens CSS et de composants, direction « neo-grotesque minimal » : encre sur papier blanc cassé, Space Grotesk et Geist, ornement réduit. Un seul langage visuel, décliné par un accent de couleur par bot (corail, lavande, ambre, vert sauge) via l'attribut data-bot. Changer une couleur ou une ombre se fait dans un seul fichier, et les accents respectent le contraste AA.
Problématique
Une flotte de bots Discord indépendants (1 bot = 1 repo) : garder cohérence, qualité et supervision sans monorepo ni copier-coller de standards.
Solution
Méta-workspace fédérateur : langage ubiquitaire, ADR, template partagé, et monitoring de flotte via un contrat /health /stats respecté par chaque bot.
Résultat
ReNamioos et Coverioos réécrits en Bun/TS, Moodioos aligné (runtime Node 22), Collabioos en conception - le tout supervisé par bdf-monitor, portail vitrine déployé.
Ce que j'ai appris
Fédérer plusieurs repos sans monorepo : contrat d'API publié (/health, /stats) et design system partagé.
Superviser une flotte de bots via l'API Dokploy, avec Elysia sur Bun pour le monitor.
Déployer en Docker sur un VPS sans port entrant public, derrière un tailnet Tailscale.
Séparer le domaine de Discord.js (architecture hexagonale, ports et adapters) pour tester les règles sans connexion au service.
Poser un contrat de supervision vérifié par une suite de tests plutôt que par une convention.
Décliner un design system par un attribut de données, avec des accents vérifiés en contraste AA.