Aller au contenu

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.