HarmonixJS-21/08/2023
Bot

HarmonixJS - Framework DiscordJS

HarmonixJS est un framework complet et modulaire destiné à faciliter la création de robots Discord. L'outil est basé sur l'utilisation des décorateurs (annotations) et de la réflexion. Il permet ainsi de créer facilement des fichiers correctement annotés, qui seront ensuite détectés et exécutés automatiquement.

Github
TypeScriptDiscordJS v14GitHubNPM
Présentation de l'utilisation de l'annotation Command
Présentation de l'utilisation de l'annotation Event

Afin de structurer proprement la logique métier et de séparer clairement les responsabilités au sein d'une application basée sur Harmonix, il est possible d'utiliser les décorateurs Command et Event . Ces décorateurs permettent de déclarer des actions métier de manière explicite, typée et centralisée, tout en évitant une configuration manuelle répétitive. Lorsqu'un décorateur Command est appliqué à une classe, celle-ci est automatiquement enregistrée dans le bus interne et devient exécutable via le système de dispatch fourni par le framework. Cela garantit une architecture orientée intention, où chaque commande représente un cas d'usage clair et isolé.

Concernant les évènements, le décorateur Event va encore plus loin en simplifiant considérablement l'implémentation des handlers. Harmonix se charge automatiquement de relier l'évènement au gestionnaire correspondant et d'injecter les paramètres nécessaires directement dans la méthode execute . Ainsi, les données transportées par l'évènement sont résolues et typées sans configuration additionnelle, ce qui améliore la lisibilité, réduit le risque d'erreur et favorise une forte cohérence dans l'ensemble du système.

Harmonix a été conçu avec une architecture modulaire permettant l'ajout de fonctionnalités complémentaires selon les besoins de l'application. Parmi ces extensions figure le plugin Express, développé afin d'intégrer une couche HTTP complète au sein de l'écosystème Harmonix. Ce module permet de mettre en place une API REST structurée tout en conservant la cohérence architecturale du framework, notamment en matière d'injection de dépendances et d'organisation par responsabilités.

L'intégration du plugin s'effectue simplement par sa déclaration et son initialisation dans le fichier index.ts. Une fois configuré, il devient possible de créer des contrôleurs et de définir des routes HTTP via des décorateurs dédiés tels que @Controller, @Get ou @Post. Cette approche, inspirée des standards modernes du développement backend, favorise une structure claire, maintenable et adaptée à des applications évolutives.

Présentation de la classe Harmonix
Installation d'un plugin dans le framework
Exemple d'utilisation du plugin expressjs

Ce projet m'a permis d'approfondir ma compréhension de l'architecture modulaire et des mécanismes avancés de TypeScript, notamment à travers l'utilisation des décorateurs et de la réflexion. Il m'a également initié aux bonnes pratiques de versioning et de publication de packages sur npm.