Structure du monorepo
Vue d'ensemble
Le monorepo Feelbat est organisé afin de séparer clairement le code exécutable du code partagé.
Cette organisation facilite la maintenance, la réutilisation du code et l'évolution de la plateforme.
Objectif
À la fin de ce guide, vous comprendrez :
- Où se trouve chaque type de projet.
- Comment est organisé le monorepo.
- Le rôle des dossiers principaux.
- Où créer un nouveau projet ou une nouvelle bibliothèque.
Organisation générale
apps/
├── api/
├── web/
└── migrations/
libs/
└── feelbat/
.github/
docker/
Le dépôt est organisé autour de deux concepts principaux :
apps/contient les projets exécutables.libs/contient le code partagé entre plusieurs projets.
Le principe est simple :
- Un projet exécutable appartient toujours à
apps/. - Une bibliothèque réutilisable appartient toujours à
libs/.
Cette séparation permet de limiter les dépendances entre les projets et de favoriser la réutilisation du code.
Le dossier apps/
Toutes les applications exécutables se trouvent dans ce dossier.
Chaque sous-dossier représente une catégorie de projets exécutables.
apps/api
Contient les services backend de la plateforme.
Chaque service est indépendant et expose généralement une API GraphQL.
Exemples :
- Configuration
- Remote Action
- Sensors
apps/web
Contient les applications web développées par Feelbat.
Chaque application possède son propre projet Nx et peut être lancée indépendamment.
apps/migrations
Contient les projets responsables des migrations de bases de données.
Chaque projet de migration est dédié à une base de données ou à un domaine spécifique.
Le dossier libs/
Les bibliothèques partagées sont regroupées dans libs/feelbat.
Les bibliothèques permettent de partager du code métier, des utilitaires ou des composants techniques entre plusieurs applications sans créer de dépendances directes entre les services.
Une bibliothèque ne doit pas être exécutable. Elle fournit uniquement du code réutilisable.
Exemples :
- Kafka
- Permissions
- Utils
- Common
- GraphQL
Tip
Si plusieurs services utilisent le même code, celui-ci devrait probablement être déplacé dans une bibliothèque partagée.
Où créer un nouveau projet ?
Utilisez les règles suivantes :
| Besoin | Emplacement |
|---|---|
| Nouveau microservice | apps/api |
| Nouvelle application web | apps/web |
| Nouvelle migration | apps/migrations |
| Code partagé | libs/feelbat |
Warning
Évitez de dupliquer du code entre plusieurs services. Si une fonctionnalité est utilisée par plusieurs projets, privilégiez une bibliothèque partagée.
À retenir
- Les projets exécutables sont regroupés dans
apps/. - Le code partagé est regroupé dans
libs/. - Chaque dossier possède une responsabilité claire.
- Une bonne organisation du monorepo facilite la maintenance, la réutilisation du code et l'évolution de la plateforme.