Aller au contenu

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.