Skip to content

Commit 0792ec6

Browse files
authored
Merge pull request #171 from Netsbump/docs/readme
📚 docs: enhance README and architecture documentation
2 parents fd1f5f7 + 4152a67 commit 0792ec6

File tree

3 files changed

+64
-4
lines changed

3 files changed

+64
-4
lines changed

README.md

Lines changed: 42 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,9 @@ Assurez-vous d'avoir installé les éléments suivants avant de commencer :
103103

104104
- **Node.js** : Version 22 ou supérieure (requis pour better-auth et support ESM).
105105
- **pnpm** : Gestionnaire de paquets version 9.7.1+ (installer avec `npm install -g pnpm@latest`).
106-
- **Docker** et **Docker Compose** : Pour l'exécution des services (Redis, PostgreSQL, Typesense).
106+
- **Docker** et **Docker Compose** : Pour l'exécution des services (Redis, PostgreSQL, PgAdmin).
107+
- **Windows/macOS** : Docker Desktop doit être installé et **lancé** avant d'exécuter les commandes Docker.
108+
- **Linux** : Docker Engine et Docker Compose suffisent.
107109

108110
### Cloner le projet
109111

@@ -143,18 +145,35 @@ cp apps/web/.env.example apps/web/.env
143145

144146
### Lancer le projet (développement)
145147

146-
Démarrer les services via Docker Compose (ex: PostgreSQL, PgAdmin):
148+
Démarrer les services via Docker Compose (PostgreSQL, PgAdmin):
147149

148150
```bash
149151
docker-compose up -d
150152
```
151153

152-
Lancer le monorepo (backend + frontends) en mode développement:
154+
Vérifier que les services sont bien démarrés :
155+
156+
```bash
157+
docker-compose ps
158+
```
159+
160+
Attendre quelques secondes que PostgreSQL soit complètement démarré, puis lancer le monorepo (backend + frontends) en mode développement:
153161

154162
```bash
155163
pnpm dev
156164
```
157165

166+
Les services seront accessibles aux URLs suivantes :
167+
- **Frontend Web** : http://localhost:5173
168+
- **API** : http://localhost:3000
169+
- **Documentation API (Swagger)** : http://localhost:3000/api
170+
- **PgAdmin** : http://localhost:5050
171+
- **Application Mobile** : Un QR code s'affichera dans le terminal pour Expo Go
172+
173+
### Migrations de base de données
174+
175+
Les migrations sont appliquées automatiquement au démarrage de l'API. Pour plus de détails sur la gestion des migrations (création, application manuelle, etc.), consultez le [README de l'API](apps/api/README.md#database-migrations).
176+
158177
### Données de test (Seeds)
159178

160179
Lors du premier lancement de l'application, des données de test sont automatiquement créées dans la base de données, incluant :
@@ -186,6 +205,26 @@ Pour vous connecter, utilisez l'un des utilisateurs générés par les seeds. Le
186205

187206
<p align="right">(<a href="#readme-top">retour en haut</a>)</p>
188207

208+
***
209+
210+
<!-- DOCUMENTATION COMPLEMENTAIRE -->
211+
<p id="documentation-complementaire"></p>
212+
213+
## Documentation Complémentaire
214+
215+
Pour approfondir certains aspects techniques du projet, consultez les guides suivants :
216+
217+
### Déploiement et Infrastructure
218+
- **[Guide de Déploiement](docs/deployment.md)** : Configuration complète de l'infrastructure de production (VPS, Dokploy, Traefik, Docker Swarm)
219+
- **[Plan de Récupération d'Urgence](docs/emergency-recovery.md)** : Procédures de restauration en cas de défaillance majeure
220+
221+
### Gestion de Base de Données
222+
- **[Guide des Migrations en Production](docs/migrations-production.md)** : Stratégies et bonnes pratiques pour gérer les migrations avec de vraies données utilisateur
223+
224+
<p align="right">(<a href="#readme-top">retour en haut</a>)</p>
225+
226+
***
227+
189228
<!-- LICENCE -->
190229
<p id="licence"></p>
191230

apps/api/README.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,8 @@ pnpm db:migration:create --name <MigrationName>
6161
pnpm db:migration:up
6262
```
6363

64+
**Note:** For production migrations with real user data, see the [Production Migrations Guide](../../docs/migrations-production.md) which details backup strategies, rollback procedures, and security best practices.
65+
6466
## Database Seeding
6567

6668
The application includes seeders to populate the database with initial data:
@@ -108,3 +110,7 @@ The API documentation is automatically generated from ts-rest contracts and is a
108110

109111
The documentation is automatically kept in sync with the API contracts defined in the shared packages, ensuring that it's always up-to-date with the latest API changes.
110112

113+
## Architecture
114+
115+
This API follows a hexagonal architecture (Ports & Adapters) approach to separate business logic from infrastructure concerns. For a comprehensive guide on the architecture patterns, dependency injection, and implementation details, see the [Hexagonal Architecture Guide](../../docs/architecture-hexagonale.md).
116+

docs/architecture-hexagonale.md

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,29 @@
22

33
## Vue d'ensemble
44

5-
DropIt utilise l'architecture hexagonale (aussi appelée "Ports & Adapters") pour isoler la **logique métier** des **frameworks et infrastructures**.
5+
DropIt utilise une approche inspirée de l'architecture hexagonale (aussi appelée "Ports & Adapters") pour isoler la **logique métier** des **frameworks et infrastructures**.
6+
7+
### ⚠️ Implémentation Partielle
8+
9+
Cette architecture est une **implémentation pragmatique** de l'hexagonale, avec un compromis assumé :
10+
-**Use-cases framework-agnostic** : Logique métier pure TypeScript
11+
-**Ports & Adapters** : Injection via interfaces
12+
- 🟡 **Entités avec MikroORM** : Les entités domaine utilisent les décorateurs ORM pour éviter un double mapping
13+
14+
Ce compromis permet de bénéficier des avantages de l'architecture hexagonale (testabilité, indépendance des use-cases) sans la complexité d'un mapping complet.
615

716
### Objectifs
817
-**Indépendance du framework** : La logique métier ne dépend pas de NestJS
918
-**Testabilité** : Les use-cases sont testables sans mock du framework
1019
-**Flexibilité** : Possibilité de changer de framework (NestJS → Express, etc.) sans toucher au métier
1120
-**Clarté** : Séparation nette des responsabilités
1221

22+
### Pourquoi cette architecture ?
23+
24+
L'API a progressivement évolué d'une architecture n-tiers classique vers cette approche hexagonale partielle. Cette évolution répond à une double motivation : approfondir ma compréhension de patterns architecturaux rencontrés en contexte professionnel, et anticiper des évolutions futures nécessitant l'isolation de la logique métier (intégration matériel externe, sources de données tierces).
25+
26+
Cette implémentation reste partielle : mes entités domaine conservent les décorateurs MikroORM plutôt que d'être des objets métier purs. Ce compromis pragmatique m'a permis de livrer un MVP fonctionnel tout en explorant concrètement les bénéfices et contraintes de l'architecture hexagonale, au-delà de la théorie.
27+
1328
---
1429

1530
## Structure des Couches

0 commit comments

Comments
 (0)