Ce projet contient les librairies de base et les intégrations de framework pour les projets API IGO. Il fournit un ensemble d'utilitaires et de patrons réutilisables pour la construction d'APIs robustes.
| Section | Description |
|---|---|
| 🚧 Requis | Dépendances requises |
| 🎓 Setup du projet | Comment setuper le projet initialement |
| 📜 Commandes | Commandes disponibles |
| 🔒 Architecture | Architecture du projet (Monorepo) |
| 🚀 Commits & Releases | Gestion des versions et des commits |
| 🌎 Contribution | Explication du flow de développement |
| 🧰 Dépannage | Liste des problèmes possibles avec solution |
- Git
- Node.js >= 20.0.0 qui inclus le Node Package Manager
- IDE: VS Code avec extensions Eslint, Prettier
Ce projet est un monorepo géré avec npm workspaces et turbo.
-
Installation des dépendances :
npm install
-
Build initial :
npm run build
| Commande | Description |
|---|---|
npm run build |
Compiler tous les packages via Turbo. |
npm run lint |
Analyser les erreurs syntaxiques et les règles de styles. |
npm run lint.fix |
Corriger automatiquement les erreurs de lint. |
npm run format |
Vérifier le formatage du code avec Prettier. |
npm run format.fix |
Appliquer le formatage Prettier. |
npm run types |
Analyser la syntaxe du code TypeScript sur l'ensemble du monorepo. |
Le projet est organisé en packages :
@igo2/base-api: Utilitaires de base (Base64, UUID, helpers, sanitization, templates).@igo2/fastify: Intégrations spécifiques à Fastify (Auth, Database, Logger, Swagger).
Le projet utilise Semantic Release pour automatiser la gestion des versions et les publications sur Github. Pour que cela fonctionne, nous suivons la convention Conventional Commits.
Chaque message de commit doit respecter le format suivant :
<type>(scope): <description>
- feat: Une nouvelle fonctionnalité (déclenche une version
minor). - fix: Une correction de bug (déclenche une version
patch). - chore/docs/style/refactor: Changements qui n'impactent pas la version de production (ne déclenche pas de release).
- BREAKING CHANGE: Un changement majeur dans l'API (déclenche une version
major). Note : Doit être mentionné dans le pied de page (footer) du commit.
À chaque fusion (merge) dans la branche principale, un pipeline est déclenché pour :
- Analyser les commits depuis la dernière release.
- Déterminer le prochain numéro de version.
- Créer un tag Git et une release.
- Publier les packages sur le registre.
- Créer une branche pour votre fonctionnalité ou correction.
- Effectuer les changements et s'assurer que le build et les tests passent.
- Créer une Pull Request sur Github avec une description claire.
- Problèmes de build Turbo : Si vous rencontrez des erreurs de cache inattendues, vous pouvez supprimer le dossier
.turboà la racine ou dans les packages. - Node version : Assurez-vous d'utiliser une version >= 20.0.0.