ujusum:2-implantation:1-repository
Différences
Ci-dessous, les différences entre deux révisions de la page.
| ujusum:2-implantation:1-repository [2026/06/20 15:23] – créée 88.174.75.218 | ujusum:2-implantation:1-repository [2026/06/29 22:01] (Version actuelle) – supprimée 83.202.252.200 | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| - | ====== Repository Initial Complet ====== | ||
| - | ===== Objectif ===== | ||
| - | |||
| - | Ce document décrit le premier livrable logiciel réellement exécutable. | ||
| - | |||
| - | À l' | ||
| - | |||
| - | <code bash> | ||
| - | git clone rental-platform | ||
| - | |||
| - | cd rental-platform | ||
| - | |||
| - | docker compose up -d | ||
| - | |||
| - | pnpm install | ||
| - | |||
| - | pnpm dev | ||
| - | </ | ||
| - | |||
| - | et obtenir : | ||
| - | |||
| - | * Frontend accessible | ||
| - | * Backend accessible | ||
| - | * Swagger accessible | ||
| - | * PostgreSQL accessible | ||
| - | * Redis accessible | ||
| - | * Mailhog accessible | ||
| - | * MinIO accessible | ||
| - | |||
| - | ---- | ||
| - | |||
| - | ====== Architecture du repository ====== | ||
| - | |||
| - | < | ||
| - | rental-platform/ | ||
| - | |||
| - | ├── apps/ | ||
| - | │ | ||
| - | │ | ||
| - | │ | ||
| - | │ | ||
| - | ├── packages/ | ||
| - | │ | ||
| - | │ | ||
| - | │ | ||
| - | │ | ||
| - | │ | ||
| - | │ | ||
| - | ├── deployment/ | ||
| - | │ | ||
| - | │ | ||
| - | │ | ||
| - | │ | ||
| - | │ | ||
| - | ├── docs/ | ||
| - | │ | ||
| - | ├── scripts/ | ||
| - | │ | ||
| - | ├── .github/ | ||
| - | │ | ||
| - | ├── docker-compose.yml | ||
| - | │ | ||
| - | ├── pnpm-workspace.yaml | ||
| - | │ | ||
| - | ├── turbo.json | ||
| - | │ | ||
| - | └── package.json | ||
| - | </ | ||
| - | |||
| - | ---- | ||
| - | |||
| - | ====== Gestionnaire de monorepo ====== | ||
| - | |||
| - | ===== Choix retenu ===== | ||
| - | |||
| - | < | ||
| - | Turborepo | ||
| - | + | ||
| - | PNPM | ||
| - | </ | ||
| - | |||
| - | ---- | ||
| - | |||
| - | ===== package.json racine ===== | ||
| - | |||
| - | <code json> | ||
| - | { | ||
| - | " | ||
| - | " | ||
| - | " | ||
| - | |||
| - | " | ||
| - | |||
| - | " | ||
| - | |||
| - | " | ||
| - | |||
| - | " | ||
| - | |||
| - | " | ||
| - | } | ||
| - | } | ||
| - | </ | ||
| - | |||
| - | ---- | ||
| - | |||
| - | ====== Frontend ====== | ||
| - | |||
| - | ===== Stack ===== | ||
| - | |||
| - | < | ||
| - | NextJS 15 | ||
| - | |||
| - | React 19 | ||
| - | |||
| - | TypeScript | ||
| - | |||
| - | Tailwind | ||
| - | |||
| - | TanStack Query | ||
| - | |||
| - | React Hook Form | ||
| - | |||
| - | Zod | ||
| - | |||
| - | shadcn/ui | ||
| - | </ | ||
| - | |||
| - | ---- | ||
| - | |||
| - | ===== Structure ===== | ||
| - | |||
| - | < | ||
| - | apps/ | ||
| - | |||
| - | ├── src | ||
| - | │ | ||
| - | ├── app | ||
| - | │ | ||
| - | ├── components | ||
| - | │ | ||
| - | ├── features | ||
| - | │ | ||
| - | ├── generated | ||
| - | │ | ||
| - | ├── hooks | ||
| - | │ | ||
| - | ├── providers | ||
| - | │ | ||
| - | ├── styles | ||
| - | │ | ||
| - | └── types | ||
| - | </ | ||
| - | |||
| - | ---- | ||
| - | |||
| - | ===== Route de validation ===== | ||
| - | |||
| - | < | ||
| - | http:// | ||
| - | </ | ||
| - | |||
| - | Affichage : | ||
| - | |||
| - | < | ||
| - | Rental Platform | ||
| - | |||
| - | Frontend OK | ||
| - | </ | ||
| - | |||
| - | ---- | ||
| - | |||
| - | ====== Backend ====== | ||
| - | |||
| - | ===== Stack ===== | ||
| - | |||
| - | < | ||
| - | NestJS | ||
| - | |||
| - | Prisma | ||
| - | |||
| - | PostgreSQL | ||
| - | |||
| - | Redis | ||
| - | |||
| - | Swagger | ||
| - | |||
| - | Passport | ||
| - | |||
| - | JWT | ||
| - | </ | ||
| - | |||
| - | ---- | ||
| - | |||
| - | ===== Structure ===== | ||
| - | |||
| - | < | ||
| - | apps/ | ||
| - | |||
| - | ├── src | ||
| - | │ | ||
| - | ├── modules | ||
| - | │ | ||
| - | ├── core | ||
| - | │ | ||
| - | ├── infrastructure | ||
| - | │ | ||
| - | ├── shared | ||
| - | │ | ||
| - | ├── prisma | ||
| - | │ | ||
| - | └── test | ||
| - | </ | ||
| - | |||
| - | ---- | ||
| - | |||
| - | ===== Endpoint de validation ===== | ||
| - | |||
| - | < | ||
| - | GET /health | ||
| - | </ | ||
| - | |||
| - | Réponse : | ||
| - | |||
| - | <code json> | ||
| - | { | ||
| - | " | ||
| - | } | ||
| - | </ | ||
| - | |||
| - | ---- | ||
| - | |||
| - | ====== Swagger ====== | ||
| - | |||
| - | ===== URL ===== | ||
| - | |||
| - | < | ||
| - | http:// | ||
| - | </ | ||
| - | |||
| - | ---- | ||
| - | |||
| - | ===== Configuration ===== | ||
| - | |||
| - | <code ts> | ||
| - | const config = | ||
| - | new DocumentBuilder() | ||
| - | .setTitle(" | ||
| - | .setVersion(" | ||
| - | .addBearerAuth() | ||
| - | .build(); | ||
| - | </ | ||
| - | |||
| - | ---- | ||
| - | |||
| - | ====== Prisma ====== | ||
| - | |||
| - | ===== Structure ===== | ||
| - | |||
| - | < | ||
| - | apps/ | ||
| - | |||
| - | ├── schema.prisma | ||
| - | |||
| - | ├── migrations | ||
| - | |||
| - | ├── seed.ts | ||
| - | </ | ||
| - | |||
| - | ---- | ||
| - | |||
| - | ===== Première migration ===== | ||
| - | |||
| - | <code bash> | ||
| - | pnpm prisma migrate dev | ||
| - | </ | ||
| - | |||
| - | ---- | ||
| - | |||
| - | ====== PostgreSQL ====== | ||
| - | |||
| - | ===== Version ===== | ||
| - | |||
| - | < | ||
| - | PostgreSQL 16 | ||
| - | </ | ||
| - | |||
| - | ---- | ||
| - | |||
| - | ===== Base ===== | ||
| - | |||
| - | < | ||
| - | rental_platform | ||
| - | </ | ||
| - | |||
| - | ---- | ||
| - | |||
| - | ===== Utilisateur ===== | ||
| - | |||
| - | < | ||
| - | rental_admin | ||
| - | </ | ||
| - | |||
| - | ---- | ||
| - | |||
| - | ====== Redis ====== | ||
| - | |||
| - | ===== Utilisations ===== | ||
| - | |||
| - | * Cache | ||
| - | * Sessions | ||
| - | * Queue | ||
| - | * Rate Limiting | ||
| - | |||
| - | ---- | ||
| - | |||
| - | ===== URL ===== | ||
| - | |||
| - | < | ||
| - | redis:// | ||
| - | </ | ||
| - | |||
| - | ---- | ||
| - | |||
| - | ====== Mailhog ====== | ||
| - | |||
| - | ===== Objectif ===== | ||
| - | |||
| - | Capturer les emails en local. | ||
| - | |||
| - | ---- | ||
| - | |||
| - | ===== URL ===== | ||
| - | |||
| - | < | ||
| - | http:// | ||
| - | </ | ||
| - | |||
| - | ---- | ||
| - | |||
| - | ====== MinIO ====== | ||
| - | |||
| - | ===== Objectif ===== | ||
| - | |||
| - | Simulation S3 locale. | ||
| - | |||
| - | ---- | ||
| - | |||
| - | ===== URL ===== | ||
| - | |||
| - | < | ||
| - | http:// | ||
| - | </ | ||
| - | |||
| - | ---- | ||
| - | |||
| - | ====== Docker Compose ====== | ||
| - | |||
| - | ===== Services ===== | ||
| - | |||
| - | < | ||
| - | frontend | ||
| - | |||
| - | backend | ||
| - | |||
| - | postgres | ||
| - | |||
| - | redis | ||
| - | |||
| - | mailhog | ||
| - | |||
| - | minio | ||
| - | </ | ||
| - | |||
| - | ---- | ||
| - | |||
| - | ===== Ports ===== | ||
| - | |||
| - | ^ Service ^ Port ^ | ||
| - | | Frontend | 3000 | | ||
| - | | Backend | 8080 | | ||
| - | | PostgreSQL | 5432 | | ||
| - | | Redis | 6379 | | ||
| - | | Mailhog | 8025 | | ||
| - | | MinIO Console | 9001 | | ||
| - | |||
| - | ---- | ||
| - | |||
| - | ====== Variables d' | ||
| - | |||
| - | ===== Backend ===== | ||
| - | |||
| - | < | ||
| - | DATABASE_URL= | ||
| - | |||
| - | REDIS_URL= | ||
| - | |||
| - | JWT_SECRET= | ||
| - | |||
| - | JWT_REFRESH_SECRET= | ||
| - | |||
| - | SMTP_HOST= | ||
| - | |||
| - | SMTP_PORT= | ||
| - | |||
| - | S3_ENDPOINT= | ||
| - | |||
| - | S3_ACCESS_KEY= | ||
| - | |||
| - | S3_SECRET_KEY= | ||
| - | </ | ||
| - | |||
| - | ---- | ||
| - | |||
| - | ===== Frontend ===== | ||
| - | |||
| - | < | ||
| - | NEXT_PUBLIC_API_URL= | ||
| - | |||
| - | NEXT_PUBLIC_APP_NAME= | ||
| - | </ | ||
| - | |||
| - | ---- | ||
| - | |||
| - | ====== GitHub Actions ====== | ||
| - | |||
| - | ===== Pipeline Frontend ===== | ||
| - | |||
| - | < | ||
| - | Install | ||
| - | |||
| - | ↓ | ||
| - | |||
| - | Lint | ||
| - | |||
| - | ↓ | ||
| - | |||
| - | TypeCheck | ||
| - | |||
| - | ↓ | ||
| - | |||
| - | Tests | ||
| - | |||
| - | ↓ | ||
| - | |||
| - | Build | ||
| - | </ | ||
| - | |||
| - | ---- | ||
| - | |||
| - | ===== Pipeline Backend ===== | ||
| - | |||
| - | < | ||
| - | Install | ||
| - | |||
| - | ↓ | ||
| - | |||
| - | Lint | ||
| - | |||
| - | ↓ | ||
| - | |||
| - | Tests | ||
| - | |||
| - | ↓ | ||
| - | |||
| - | Build | ||
| - | |||
| - | ↓ | ||
| - | |||
| - | Prisma Validate | ||
| - | </ | ||
| - | |||
| - | ---- | ||
| - | |||
| - | ====== Qualité ====== | ||
| - | |||
| - | ===== ESLint ===== | ||
| - | |||
| - | < | ||
| - | typescript-eslint | ||
| - | </ | ||
| - | |||
| - | ---- | ||
| - | |||
| - | ===== Formatage ===== | ||
| - | |||
| - | < | ||
| - | Prettier | ||
| - | </ | ||
| - | |||
| - | ---- | ||
| - | |||
| - | ===== Hooks Git ===== | ||
| - | |||
| - | < | ||
| - | Husky | ||
| - | </ | ||
| - | |||
| - | ---- | ||
| - | |||
| - | ===== Commit Convention ===== | ||
| - | |||
| - | < | ||
| - | feat: | ||
| - | |||
| - | fix: | ||
| - | |||
| - | refactor: | ||
| - | |||
| - | test: | ||
| - | |||
| - | docs: | ||
| - | </ | ||
| - | |||
| - | ---- | ||
| - | |||
| - | ====== Sécurité ====== | ||
| - | |||
| - | ===== Dépendances ===== | ||
| - | |||
| - | < | ||
| - | npm audit | ||
| - | |||
| - | snyk | ||
| - | |||
| - | dependabot | ||
| - | </ | ||
| - | |||
| - | ---- | ||
| - | |||
| - | ===== Secrets ===== | ||
| - | |||
| - | Aucun secret dans Git. | ||
| - | |||
| - | Utilisation : | ||
| - | |||
| - | < | ||
| - | .env | ||
| - | |||
| - | .env.local | ||
| - | |||
| - | .env.production | ||
| - | </ | ||
| - | |||
| - | ---- | ||
| - | |||
| - | ====== Sprint Bootstrap ====== | ||
| - | |||
| - | ===== Jour 1 ===== | ||
| - | |||
| - | * Création Monorepo | ||
| - | * Configuration PNPM | ||
| - | * Configuration Turborepo | ||
| - | |||
| - | ---- | ||
| - | |||
| - | ===== Jour 2 ===== | ||
| - | |||
| - | * Création Frontend | ||
| - | * Création Backend | ||
| - | * Docker Compose | ||
| - | |||
| - | ---- | ||
| - | |||
| - | ===== Jour 3 ===== | ||
| - | |||
| - | * PostgreSQL | ||
| - | * Prisma | ||
| - | * Redis | ||
| - | |||
| - | ---- | ||
| - | |||
| - | ===== Jour 4 ===== | ||
| - | |||
| - | * Swagger | ||
| - | * Health Check | ||
| - | * CI GitHub | ||
| - | |||
| - | ---- | ||
| - | |||
| - | ===== Jour 5 ===== | ||
| - | |||
| - | * Documentation | ||
| - | * Validation environnement | ||
| - | |||
| - | ---- | ||
| - | |||
| - | ====== Définition de terminé ====== | ||
| - | |||
| - | Le bootstrap est terminé lorsque : | ||
| - | |||
| - | * Frontend démarre | ||
| - | * Backend démarre | ||
| - | * Prisma migre | ||
| - | * Swagger fonctionne | ||
| - | * Redis fonctionne | ||
| - | * Mailhog fonctionne | ||
| - | * MinIO fonctionne | ||
| - | * Pipeline GitHub passe | ||
| - | * Docker Compose démarre sans erreur | ||
| - | |||
| - | ---- | ||
| - | |||
| - | ====== Livrables Sprint Bootstrap ====== | ||
| - | |||
| - | * Repository Git | ||
| - | * Monorepo | ||
| - | * NextJS | ||
| - | * NestJS | ||
| - | * Prisma | ||
| - | * PostgreSQL | ||
| - | * Redis | ||
| - | * Docker Compose | ||
| - | * GitHub Actions | ||
| - | * Swagger | ||
| - | * Documentation de démarrage | ||
| - | |||
| - | ---- | ||
| - | |||
| - | ====== Sprint suivant ====== | ||
| - | |||
| - | Une fois ce socle validé, le premier sprint métier recommandé est : | ||
| - | |||
| - | ===== Sprint 1 ===== | ||
| - | |||
| - | Module Authentification | ||
| - | |||
| - | * Register | ||
| - | * Login | ||
| - | * JWT | ||
| - | * Refresh Token | ||
| - | * RBAC | ||
| - | * User Profile | ||
| - | * Swagger | ||
| - | * Tests | ||
| - | |||
| - | À la fin du Sprint 1, les développeurs disposeront d'une plateforme sécurisée sur laquelle construire tous les autres modules métiers. | ||
ujusum/2-implantation/1-repository.1781961802.txt.gz · Dernière modification : 2026/06/20 15:23 de 88.174.75.218 · Actuellement bloqué par : 192.168.0.100,216.73.216.20