Bienvenue dans le monorepo de notre projet ! Ce dépôt regroupe les 3 applications suivantes :
- API : backend AdonisJS
- Web : frontend Next.js
- Mobile : application mobile Expo (React Native)
- Géré avec Turborepo, pnpm, et un environnement DevContainer
Pour plus de détails, consultez nos documents techniques :
apps/
api/ # Application AdonisJS (backend)
web/ # Application Next.js (frontend)
mobile/ # Application Expo (React Native)
packages/
... # Librairies partagées (si applicable)
- Turborepo : pour orchestrer les builds, les caches, etc.
- pnpm : gestionnaire de paquets rapide et fiable avec support monorepo
- DevContainer : environnement de développement standardisé (VS Code + Docker)
- Node.js : version
22.19.0 - Expo CLI, AdonisJS CLI, Next.js
- Docker + VS Code
- pnpm
- Node.js via
.nvmrcou version recommandée
Si tu utilises VS Code :
# Ouvrir dans un conteneur
> F1 > Dev Containers: Reopen in Containerpnpm install# Lancer toutes les apps
pnpm dev
# Ou une seule
pnpm --filter api dev
pnpm --filter web dev
pnpm --filter mobile startLes commandes principales :
pnpm dev # Démarre toutes les apps en mode dev
pnpm build # Build tout le monorepo
pnpm lint # Linter sur tous les projets
pnpm test # Exécute tous les tests (si configurés)Utilisé pour les composants partagés, hooks, types, etc.
- Garantir la qualité du code sur toutes les applications (API, Web, Mobile).
- Détecter rapidement les régressions.
- Faciliter la maintenance et la confiance lors des déploiements.
- Chaque app a un dossier
tests/à sa racine (apps/api/tests,apps/web/tests,apps/mobile/tests) - Les tests unitaires et d’intégration y sont regroupés
- On lance les tests avant chaque commit
pnpm test # Lance tous les tests du monorepo
pnpm --filter api test # Tests de l’API (AdonisJS)
pnpm --filter web test # Tests du web (Next.js)
pnpm --filter mobile test # Tests du mobile (Expo) - API (AdonisJS) : tests unitaires et fonctionnels avec Japa, le framework de test officiel d'AdonisJS.
- Web (Next.js) : tests unitaires et d'intégration avec Jest + React Testing Library.
- Mobile (Expo) : tests unitaires avec Jest + tests d'intégration avec React Native Testing Library.
- Utiliser
pnpmuniquement, pasnpmniyarn - Garder chaque app isolée autant que possible
- Factoriser dans
packages/ce qui peut être partagé - Utiliser les scripts
pnpmdepuis la racine ou--filter
Chaque application du monorepo utilise ses propres fichiers d’environnement, stockés localement et non commités. Voici la liste des fichiers par app :
| App | Fichier | Description |
|---|---|---|
| API | apps/api/.env |
Configuration de l'API (DB, JWT, etc.) |
| Web | apps/web/.env.local |
Variables publiques pour le frontend |
| Mobile | apps/mobile/.env |
Clés et endpoints pour l'app mobile |
| Variable | Description | Exemple |
|---|---|---|
DB_HOST |
Adresse de la base de données | localhost |
DB_USER |
Utilisateur de la base de données | root |
DB_PASSWORD |
Mot de passe de la base | password123 |
API_SECRET |
Clé secrète pour signer les tokens | mysupersecretkey123 |
PORT |
Port de l’API | 3333 |
| Variable | Description | Exemple |
|---|---|---|
NEXT_PUBLIC_API_URL |
URL publique de l’API | https://api.example.com |
NEXT_PUBLIC_APP_NAME |
Nom de l’application | MonApp |
NEXT_PUBLIC_VERSION |
Version du frontend affichée | 1.0.0 |
| Variable | Description | Exemple |
|---|---|---|
API_BASE_URL |
URL de base de l’API | https://api.example.com |
GOOGLE_MAPS_KEY |
Clé API Google Maps | AIzaSy... |
APP_ENV |
Environnement courant (dev, prod, etc.) |
dev |
| App | Mécanisme de chargement |
|---|---|
| API | Chargement via dotenv ou Env d'AdonisJS |
| Web | Chargement automatique par Next.js via .env.local |
| Mobile | Chargement via react-native-dotenv ou autre outil |
- Ne jamais committer les fichiers
.envcontenant des secrets - Ajouter dans le
.gitignoreglobal du repo :
.env
.env.*Fournir un fichier d’exemple pour chaque app :
apps/api/.env.example
apps/web/.env.example
apps/mobile/.env.exampleCes fichiers doivent contenir la liste des variables attendues, sans valeurs sensibles.
- Quentin (Chef de projet)
- Téo (API, DevOps, SysAdmin)
- Lucas (Web Designer, Frontend)
- Gautier (Mobile)