Table des matières

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 :


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


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


Jour 2


Jour 3


Jour 4


Jour 5


Définition de terminé

Le bootstrap est terminé lorsque :


Livrables Sprint Bootstrap


Sprint suivant

Une fois ce socle validé, le premier sprint métier recommandé est :

Sprint 1

Module Authentification

À la fin du Sprint 1, les développeurs disposeront d'une plateforme sécurisée sur laquelle construire tous les autres modules métiers.

DokuWiki Appliance - Powered by TurnKey Linux