Chapitre 1 · Leçon 1
La règle fondamentale : les dépendances vont vers l'intérieur
Section 1
Step 1
Clean Architecture organise le code en cercles concentriques. La règle fondamentale : les dépendances ne pointent que vers l'intérieur. Le code du centre ne sait rien de l'extérieur.
snippet.typescript
1/*
2 * Clean Architecture — Les 4 couches (de l'intérieur vers l'extérieur)
3 *
4 * ┌────────────────────────────────────────────┐
5 * │ FRAMEWORKS & DRIVERS │ ← Express, Prisma, Sendgrid
6 * │ ┌────────────────────────────────────┐ │
7 * │ │ INTERFACE ADAPTERS │ │ ← Controllers, Presenters, Repos Impl
8 * │ │ ┌────────────────────────────┐ │ │
9 * │ │ │ USE CASES (Application) │ │ │ ← Logique applicative
10 * │ │ │ ┌────────────────────┐ │ │ │
11 * │ │ │ │ ENTITIES (Domain) │ │ │ │ ← Règles métier pures
12 * │ │ │ └────────────────────┘ │ │ │
13 * │ │ └────────────────────────────┘ │ │
14 * │ └────────────────────────────────────┘ │
15 * └────────────────────────────────────────────┘
16 *
17 * ↑ Les flèches de dépendance pointent TOUJOURS vers l'intérieur
18 * Express dépend des Controllers, pas l'inverse
19 * Prisma dépend des Repositories, pas l'inverse
20 */
21
22// Structure dans un projet Node.js
23src/
24├── domain/ // Entities — aucune dépendance externe
25│ ├── entities/
26│ │ ├── User.ts
27│ │ └── Tutorial.ts
28│ └── repositories/ // Interfaces (contrats)
29│ ├── IUserRepository.ts
30│ └── ITutorialRepository.ts
31│
32├── application/ // Use Cases
33│ └── usecases/
34│ ├── RegisterUser.ts
35│ └── GetTutorials.ts
36│
37├── infrastructure/ // Interface Adapters + Frameworks
38│ ├── repositories/ // Implémentations Prisma
39│ │ ├── PrismaUserRepository.ts
40│ │ └── PrismaTutorialRepository.ts
41│ ├── controllers/ // Express controllers
42│ │ ├── UserController.ts
43│ │ └── TutorialController.ts
44│ └── config/
45│ └── container.ts // Injection de dépendancesStep 2
Un Use Case orchestre les entités et les repositories pour accomplir une tâche applicative. Il ne sait rien d'Express ou de Prisma.