Aller au contenu

Accessibilité

Contraste
Police d'écriture

Vos choix sont enregistrés sur cet appareil. Le site suit aussi les réglages du navigateur : contraste renforcé, réduction des animations, couleurs forcées.

BotDiscordFactory

Flotte de bots Discord pour communautés de streameurs.

Rôle · Développeur de la flottePériode · Octobre 2025 - Septembre 2026
BunTypeScriptdiscord.js v14FastifyDrizzle ORMNeon PostgresAstroElysia

À 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

  1. Fédérer plusieurs repos sans monorepo : contrat d'API publié (/health, /stats) et design system partagé.

  2. Superviser une flotte de bots via l'API Dokploy, avec Elysia sur Bun pour le monitor.

  3. Déployer en Docker sur un VPS sans port entrant public, derrière un tailnet Tailscale.

  4. Séparer le domaine de Discord.js (architecture hexagonale, ports et adapters) pour tester les règles sans connexion au service.

  5. Poser un contrat de supervision vérifié par une suite de tests plutôt que par une convention.

  6. Décliner un design system par un attribut de données, avec des accents vérifiés en contraste AA.

Galerie

1 / 2