====== Repository Initial Complet ====== ===== Objectif ===== Ce document décrit le premier livrable logiciel réellement exécutable. À l'issue de cette étape, un développeur doit pouvoir exécuter : 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/ │ │ ├── frontend/ │ └── backend/ │ ├── packages/ │ │ ├── sdk/ │ ├── ui/ │ ├── shared/ │ └── eslint-config/ │ ├── deployment/ │ │ ├── docker/ │ ├── kubernetes/ │ └── helm/ │ ├── docs/ │ ├── scripts/ │ ├── .github/ │ ├── docker-compose.yml │ ├── pnpm-workspace.yaml │ ├── turbo.json │ └── package.json ---- ====== Gestionnaire de monorepo ====== ===== Choix retenu ===== Turborepo + PNPM ---- ===== package.json racine ===== { "name": "rental-platform", "private": true, "packageManager": "pnpm@10", "scripts": { "dev": "turbo run dev", "build": "turbo run build", "lint": "turbo run lint", "test": "turbo run test" } } ---- ====== Frontend ====== ===== Stack ===== NextJS 15 React 19 TypeScript Tailwind TanStack Query React Hook Form Zod shadcn/ui ---- ===== Structure ===== apps/frontend ├── src │ ├── app │ ├── components │ ├── features │ ├── generated │ ├── hooks │ ├── providers │ ├── styles │ └── types ---- ===== Route de validation ===== http://localhost:3000 Affichage : Rental Platform Frontend OK ---- ====== Backend ====== ===== Stack ===== NestJS Prisma PostgreSQL Redis Swagger Passport JWT ---- ===== Structure ===== apps/backend ├── src │ ├── modules │ ├── core │ ├── infrastructure │ ├── shared │ ├── prisma │ └── test ---- ===== Endpoint de validation ===== GET /health Réponse : { "status": "UP" } ---- ====== Swagger ====== ===== URL ===== http://localhost:8080/docs ---- ===== Configuration ===== const config = new DocumentBuilder() .setTitle("Rental Platform API") .setVersion("1.0.0") .addBearerAuth() .build(); ---- ====== Prisma ====== ===== Structure ===== apps/backend/prisma ├── schema.prisma ├── migrations ├── seed.ts ---- ===== Première migration ===== pnpm prisma migrate dev ---- ====== PostgreSQL ====== ===== Version ===== PostgreSQL 16 ---- ===== Base ===== rental_platform ---- ===== Utilisateur ===== rental_admin ---- ====== Redis ====== ===== Utilisations ===== * Cache * Sessions * Queue * Rate Limiting ---- ===== URL ===== redis://localhost:6379 ---- ====== Mailhog ====== ===== Objectif ===== Capturer les emails en local. ---- ===== URL ===== http://localhost:8025 ---- ====== MinIO ====== ===== Objectif ===== Simulation S3 locale. ---- ===== URL ===== http://localhost:9001 ---- ====== 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'environnement ====== ===== 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.