Installation de l'environnement local
Vue d'ensemble
Ce guide explique comment configurer et lancer le monorepo feelbat en local.
Objectif
À la fin de ce guide, vous serez capable de :
- Installer les dépendances du projet.
- Démarrer l'infrastructure locale.
- Exécuter les migrations de base de données.
- Lancer les services backend et les applications web.
- Accéder au Playground GraphQL.
Prérequis
| Software | Version |
|---|---|
| Node.js | >= 22 |
| pnpm | 11.5.2 |
| Docker Desktop or OrbStack | Latest |
| Git | Latest |
Vérifiez votre installation :
node -v
pnpm -v
docker --version
git --version
Cloner le dépôt
git clone https://github.com/Feelbat-Reunion/feelbat-monorepo.git
cd feelbat-monorepo
Installer les dépendances
Installez toutes les dépendances du workspace.
pnpm install
Configuration de l'environnement
Nx charge automatiquement les fichiers d'environnement. Selon la cible et la configuration exécutées, il résout le fichier d'environnement le plus spécifique disponible.
Chaque projet contient un fichier project.json décrivant ses cibles disponibles.
Exemple :
{
"targets": {
"build": {}
}
}
Pour associer un fichier d'environnement à une cible, utilisez la convention de nommage suivante :
| Target | Environment file |
|---|---|
| build | .build.env |
| serve | .serve.env |
| test | .test.env |
Les cibles peuvent également définir des configurations telles que development, production ou test.
Pour cibler une configuration spécifique, ajoutez-la au nom du fichier :
.build.development.env
.build.production.env
.test.ci.env
Note
Une page dédiée explique en détail le fonctionnement des variables d'environnement, les conventions de nommage des fichiers .env ainsi que la stratégie de résolution utilisée par Nx.
👉 Consultez le guide Variables d'environnement.
Démarrer l'infrastructure locale
L'infrastructure est entièrement gérée par Nx.
Démarrez tous les services nécessaires :
pnpm nx run @feelbat/docker:infra-local
Tip
L'extension Nx Console pour Visual Studio Code facilite le lancement des targets Nx sans avoir à mémoriser les commandes.
Cette commande démarre :
| Service | Description |
|---|---|
| auth-db | Base de données PostgreSQL d'authentification |
| rs-manager-db | Base de données PostgreSQL du gestionnaire de ressources |
| influx-db | Instance InfluxDB |
| kafka | Broker Kafka |
| zookeeper | Service de coordination Kafka |
| mailcatcher | Serveur SMTP local |
Vous pouvez également démarrer un service spécifique :
pnpm nx run @feelbat/docker:infra-local:kafka
Migrations de base de données
Une fois les bases de données lancées, exécutez les migrations :
pnpm nx run @feelbat/migration:rs-manager
Cette commande crée ou met à jour le schéma de base de données requis.
Lancer un service backend
Les services backend se trouvent dans apps/api.
Lancez un service avec la commande :
pnpm nx run @feelbat/<service_name>:serve:development
Le <service_name> se trouve dans le fichier project.json ou package.json du projet.
Pour afficher tous les projets disponibles :
pnpm nx show projects
Playground GraphQL
Chaque service backend expose un Playground GraphQL.
http://localhost:<service_port>/graphql
Si votre fonctionnalité dépend de plusieurs services GraphQL, lancez le gateway legacy après avoir démarré les services backend nécessaires :
pnpm nx run @feelbat-legacy/gateway:serve:development
Puis accédez au schéma GraphQL unifié :
http://localhost:<gateway_port>/graphql
Warning
Si vous ne lancez qu'une partie des services backend, pensez à commenter les modules inutilisés dans le AppModule du legacy-gateway afin d'éviter des erreurs au démarrage.
Lancer une application web
Les applications web se trouvent dans apps/web.
Lancez une application avec la commande :
pnpm nx run @feelbat/<app_name>:serve
Structure du projet
Le monorepo est organisé autour de deux grands dossiers :
apps/contient les applications et services exécutables.libs/contient le code partagé entre plusieurs applications ou services.
apps/
├── api/ Services backend exposant des APIs GraphQL
├── web/ Applications web
└── migrations/ Projets dédiés aux migrations des bases de données
libs/
└── feelbat/ Bibliothèques partagées Feelbat
Note
Cette section donne uniquement une vue rapide de l'organisation du dépôt. Une page dédiée décrit plus en détail la structure du monorepo, le rôle des applications, des services et des bibliothèques partagées.
Outils recommandés
| Outil | Description |
|---|---|
| Nx Console | Extension Visual Studio Code permettant d'explorer les projets Nx et d'exécuter les targets sans passer par le terminal. |
| Docker Desktop / OrbStack | Exécution de l'infrastructure locale. |
Tip
Nx Console est fortement recommandé pour les nouveaux développeurs.
Résolution des problèmes
Les problèmes suivants seront documentés progressivement :
- Connexion à PostgreSQL
- Démarrage de Kafka
- Conflits de ports
- Problèmes liés aux migrations
- Cache Nx
Cette section sera enrichie au fil du temps avec les problèmes les plus fréquemment rencontrés par l'équipe de développement.