====== Génération des artefacts techniques ====== ===== Objectif ===== À ce stade, le projet dispose : * du cahier des charges, * de l'architecture fonctionnelle, * du modèle de données, * du modèle UML, * de l'architecture Frontend, * de l'architecture Backend, * du backlog, * du plan DevOps. L'étape suivante consiste à produire les artefacts techniques directement exploitables par les développeurs. ---- ====== Ordre recommandé de génération ====== L'ordre est important car certains artefacts dépendent des précédents. ^ Ordre ^ Livrable ^ Priorité ^ | 1 | Monorepo Frontend/Backend | Critique | | 2 | Configuration NestJS | Critique | | 3 | Configuration NextJS | Critique | | 4 | OpenAPI YAML complet | Critique | | 5 | DTO TypeScript | Critique | | 6 | Entités Prisma / TypeORM | Critique | | 7 | Docker Compose | Haute | | 8 | GitHub Actions | Haute | | 9 | Helm Charts Kubernetes | Haute | | 10 | Terraform Infrastructure | Moyenne | ---- ====== Monorepo cible ====== rental-platform/ ├── apps/ │ │ ├── frontend/ │ └── backend/ │ ├── packages/ │ │ ├── shared-types/ │ ├── ui-kit/ │ ├── sdk/ │ └── eslint-config/ │ ├── docs/ │ ├── deployment/ │ ├── scripts/ │ └── .github/ ---- ====== Frontend ====== ===== Arborescence ===== apps/frontend ├── src │ ├── public │ ├── generated │ ├── tests │ ├── package.json │ └── next.config.ts ---- ====== Backend ====== ===== Arborescence ===== apps/backend ├── src │ ├── prisma │ ├── test │ ├── package.json │ └── nest-cli.json ---- ====== OpenAPI ====== ===== Objectif ===== L'OpenAPI devient la source de vérité. Tout est généré à partir de lui : * SDK * DTO * Validation * Swagger * Documentation ---- ===== Livrable attendu ===== docs/openapi/ openapi.yaml Taille estimée : * 8000 à 12000 lignes ---- ====== Génération SDK ====== ===== Frontend ===== openapi-generator-cli generate \ -g typescript-fetch ---- ===== Résultat ===== packages/sdk ├── api.ts ├── models.ts ├── services.ts └── index.ts ---- ====== Entités Prisma ====== ===== Source ===== Le schéma PostgreSQL précédemment défini. ---- ===== Exemple ===== model Property { id String @id @default(uuid()) code String @unique title String status String ownerId String owner Owner @relation( fields: [ownerId], references: [id] ) createdAt DateTime @default(now()) updatedAt DateTime @updatedAt } ---- ====== Entités TypeORM ====== ===== Exemple ===== @Entity("properties") export class Property { @PrimaryGeneratedColumn("uuid") id: string; @Column() title: string; @Column() status: string; } ---- ====== Docker Compose ====== ===== Objectif ===== Démarrage local complet. ---- ===== Services ===== frontend backend postgres redis mailhog minio ---- ===== Commande ===== docker compose up -d ---- ====== GitHub Actions ====== ===== Pipeline Frontend ===== lint typecheck test build docker deploy ---- ===== Pipeline Backend ===== lint unit-test integration-test build docker deploy ---- ====== Helm Charts ====== ===== Structure ===== deployment/ helm/ ├── frontend ├── backend ├── postgres ├── redis └── ingress ---- ====== Variables Kubernetes ====== DATABASE_URL REDIS_URL JWT_SECRET SMTP_HOST S3_ENDPOINT STRIPE_SECRET ---- ====== Repository Git ====== ===== Branches ===== main develop feature/* release/* hotfix/* ---- ====== Livrables techniques restants ====== Les documents qui n'ont pas encore été détaillés et qui représentent le plus de valeur sont : * OpenAPI YAML complet (250 endpoints) * Prisma Schema complet (80+ tables) * Entités NestJS TypeORM * Monorepo Turborepo * Docker Compose complet * GitHub Actions complètes * Helm Charts Kubernetes * Terraform Infrastructure AWS/OVH ---- ====== Recommandation ====== Le prochain document à produire devrait être : **OpenAPI YAML complet** car il permettra ensuite de générer automatiquement : * SDK Frontend * DTO NestJS * Validation Zod * Swagger * Documentation API * Mock Server * Tests contractuels et deviendra la véritable source de référence technique du projet.