docs: update README with revised architecture and setup instructions

Streamlined project structure documentation by detailing separate backend and frontend directories, updated setup commands, added Docker usage examples, and improved clarity on environment configuration.
This commit is contained in:
Mathis H (Avnyr) 2025-05-15 18:17:18 +02:00
parent b64a6e9e2e
commit 4dbb858782

100
README.md
View File

@ -57,18 +57,23 @@ Cette application permet aux utilisateurs de créer et gérer des groupes de per
## 🏗️ Architecture Technique
L'application suit une architecture monorepo avec séparation claire entre le frontend et le backend:
L'application suit une architecture avec séparation claire entre le frontend et le backend:
```
/
├── apps/
│ ├── web/ # Application frontend NextJS
│ └── api/ # Application backend NestJS
├── packages/ # Packages partagés
│ ├── database/ # Configuration DrizzleORM et modèles
│ ├── eslint-config/ # Configuration ESLint partagée
│ ├── tsconfig/ # Configuration TypeScript partagée
│ └── ui/ # Bibliothèque de composants UI partagés
├── backend/ # Application backend NestJS
│ ├── src/ # Code source du backend
│ │ ├── database/ # Configuration et schéma de base de données
│ │ │ ├── migrations/ # Système de migrations de base de données
│ │ │ └── schema/ # Schéma de base de données avec DrizzleORM
│ │ └── modules/ # Modules NestJS (auth, users, projects, etc.)
│ └── drizzle.config.ts # Configuration de DrizzleORM pour les migrations
├── frontend/ # Application frontend NextJS
│ ├── app/ # Pages et routes Next.js (App Router)
│ ├── components/ # Composants UI réutilisables
│ ├── hooks/ # Hooks React personnalisés
│ └── lib/ # Utilitaires et configurations
├── docs/ # Documentation du projet
```
### Flux d'Interactions
@ -152,49 +157,66 @@ flowchart TD
# Cloner le dépôt
git clone git@git.yidhra.fr:WorkSimplon/brief-20.git
# Installer pnpm si ce n'est pas déjà fait
npm install -g pnpm
# Installer les dépendances du backend
cd backend
npm install
# Installer les dépendances
pnpm install
# Configurer les variables d'environnement
# Configurer les variables d'environnement du backend
cp .env.example .env
# Éditer le fichier .env avec vos propres valeurs
# Démarrer l'application en mode développement
pnpm dev
# Installer les dépendances du frontend
cd ../frontend
npm install
# Construire l'application pour la production
pnpm build
# Configurer les variables d'environnement du frontend (si nécessaire)
cp .env.example .env.local (si le fichier existe)
# Éditer le fichier .env.local avec vos propres valeurs
# Démarrer l'application en mode production
pnpm start
# Démarrer le backend en mode développement
cd ../backend
npm run start:dev
# Dans un autre terminal, démarrer le frontend en mode développement
cd ../frontend
npm run dev
```
### Gestion du Workspace avec PNPM
Ce projet utilise PNPM pour la gestion du workspace et des packages. PNPM offre plusieurs avantages :
- **Efficacité de stockage** : Utilise un stockage partagé pour éviter la duplication des packages
- **Gestion de monorepo** : Facilite la gestion des dépendances entre les packages du monorepo
- **Performance** : Installation et mise à jour des dépendances plus rapides
- **Déterminisme** : Garantit que les mêmes dépendances sont installées de manière cohérente
Pour travailler avec les différents packages du monorepo :
Vous pouvez également utiliser Docker pour démarrer l'application complète :
```bash
# Exécuter une commande dans un package spécifique
pnpm --filter <package-name> <command>
# À la racine du projet
docker-compose up -d
```
# Exemple : démarrer le frontend uniquement
pnpm --filter web dev
### Gestion des Projets Backend et Frontend
# Installer une dépendance dans un package spécifique
pnpm --filter <package-name> add <dependency>
Ce projet est organisé en deux applications distinctes (backend et frontend) qui peuvent être développées et déployées séparément. Chaque application a ses propres dépendances et scripts npm.
# Installer une dépendance de développement dans un package spécifique
pnpm --filter <package-name> add -D <dependency>
Pour travailler avec les projets backend et frontend séparément :
```bash
# Naviguer vers le répertoire backend
cd backend
# Démarrer le backend en mode développement
npm run start:dev
# Naviguer vers le répertoire frontend
cd ../frontend
# Démarrer le frontend en mode développement
npm run dev
```
Vous pouvez également utiliser Docker Compose pour démarrer l'ensemble de l'application :
```bash
# Démarrer tous les services (backend, frontend, base de données)
docker-compose up -d
# Arrêter tous les services
docker-compose down
```
## 🔒 Sécurité et Conformité