ujusum:3-codage:1-repository:1-pas-a-pas
Ceci est une ancienne révision du document !
Table des matières
Phase 1 — Fondation du dépôt (pas à pas complet)
Objectif
À la fin de cette phase, un développeur doit pouvoir exécuter :
docker compose up
et obtenir :
✓ PostgreSQL ✓ Redis ✓ MinIO ✓ API NestJS ✓ Frontend NextJS ✓ Swagger ✓ Prisma Studio
sans aucun développement métier.
—
Étape 1 — Préparer le poste de développement
Installer les prérequis
Vérifier :
node -v npm -v git --version docker --version docker compose version
Versions recommandées :
NodeJS 22 LTS npm 10+ Docker 27+ Git 2.45+
—
Étape 2 — Création du repository
Créer le dossier
mkdir rental-platform cd rental-platform
—
Initialiser Git
git init
—
Créer le dépôt GitHub
Exemple :
rental-platform
Puis :
git remote add origin git@github.com:organisation/rental-platform.git
—
Étape 3 — Initialiser le monorepo
Créer package.json
npm init -y
—
Installer Turborepo
npm install -D turbo
—
Créer turbo.json
{
"$schema": "https://turbo.build/schema.json",
"tasks": {
"build": {
"dependsOn": ["^build"]
},
"lint": {},
"test": {},
"dev": {
"cache": false
}
}
}
—
Étape 4 — Créer l'arborescence
mkdir apps mkdir packages mkdir prisma mkdir infrastructure mkdir docs mkdir .github
—
Créer les sous-dossiers
mkdir apps/api mkdir apps/web mkdir apps/admin-portal mkdir apps/owner-portal mkdir packages/ui mkdir packages/sdk mkdir packages/shared mkdir packages/eslint-config mkdir packages/tsconfig
—
Étape 5 — Initialiser NextJS
Front Office
npx create-next-app@latest apps/web \ --typescript \ --tailwind \ --eslint \ --app \ --src-dir
—
Back Office
npx create-next-app@latest apps/admin-portal \ --typescript \ --tailwind \ --eslint \ --app \ --src-dir
—
Extranet propriétaire
npx create-next-app@latest apps/owner-portal \ --typescript \ --tailwind \ --eslint \ --app \ --src-dir
—
Étape 6 — Initialiser NestJS
Installer Nest CLI
npm install -g @nestjs/cli
—
Générer l'API
nest new apps/api
Choisir :
npm
—
Tester
cd apps/api npm run start:dev
Swagger sera ajouté ultérieurement.
—
Étape 7 — Configurer les Workspaces
Modifier package.json racine
{
"private": true,
"workspaces": [
"apps/*",
"packages/*"
]
}
—
Installer les dépendances
npm install
—
Étape 8 — Installer Prisma
Dépendances
npm install prisma @prisma/client
—
Initialiser Prisma
npx prisma init
—
Vérifier
Le fichier doit exister :
prisma/schema.prisma
—
Étape 9 — Préparer Docker
Créer le dossier
mkdir infrastructure/docker
—
Créer docker-compose.yml
services: postgres: ``` image: postgres:17 environment: POSTGRES_USER: postgres POSTGRES_PASSWORD: postgres POSTGRES_DB: rental_platform ports: - "5432:5432" ``` redis: ``` image: redis:7 ports: - "6379:6379" ``` minio: ``` image: minio/minio command: server /data environment: MINIO_ROOT_USER: minio MINIO_ROOT_PASSWORD: minio123 ports: - "9000:9000" - "9001:9001" ```
—
Lancer
docker compose up -d
—
Vérifier
docker ps
Doit afficher :
postgres redis minio
—
Étape 10 — Variables d'environnement
Créer .env
DATABASE_URL="postgresql://postgres:postgres@localhost:5432/rental_platform" REDIS_URL="redis://localhost:6379" MINIO_ENDPOINT="localhost" MINIO_PORT=9000 MINIO_ACCESS_KEY=minio MINIO_SECRET_KEY=minio123
—
Étape 11 — Premier modèle Prisma
Modifier schema.prisma
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
}
generator client {
provider = "prisma-client-js"
}
model User {
id String @id @default(uuid())
email String @unique
createdAt DateTime @default(now())
}
— En version prisma 7, il faut adapter le fichier de config —
datasource db {
provider = "postgresql"
}
generator client {
provider = "prisma-client-js"
}
model User {
id String @id @default(uuid())
email String @unique
createdAt DateTime @default(now())
}
—
Générer migration
npx prisma migrate dev --name init
—
Générer client
npx prisma generate
—
Étape 12 — Prisma Studio
Lancer
npx prisma studio
—
Vérifier
Naviguer :
http://localhost:5555
—
Étape 13 — Installer Swagger NestJS
Dépendances
cd apps/api npm install @nestjs/swagger swagger-ui-express
—
Modifier main.ts
const config = new DocumentBuilder()
.setTitle('Rental Platform API')
.setVersion('1.0')
.build();
const document = SwaggerModule.createDocument(
app,
config,
);
SwaggerModule.setup(
'swagger',
app,
document,
);
—
Tester
http://localhost:3000/swagger
—
Étape 14 — GitHub Actions
Créer
.github/workflows/ci.yml
—
Contenu
name: CI on: push: jobs: build: ``` runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 - run: npm install - run: npm run build ```
—
Étape 15 — Premier commit
git add . git commit -m "chore: initialize platform foundation" git push -u origin main
—
Critères de validation
La phase 1 est terminée lorsque :
✓ Monorepo opérationnel ✓ Turborepo opérationnel ✓ NextJS opérationnel ✓ NestJS opérationnel ✓ PostgreSQL opérationnel ✓ Redis opérationnel ✓ MinIO opérationnel ✓ Prisma opérationnel ✓ Swagger opérationnel ✓ Docker Compose opérationnel ✓ GitHub Actions opérationnel
—
Livrable obtenu
À ce stade, le projet dispose d'un socle exécutable complet permettant d'entamer immédiatement :
Sprint 1 Authentification Register Login JWT RBAC User Profile
ujusum/3-codage/1-repository/1-pas-a-pas.1780791314.txt.gz · Dernière modification : 2026/06/07 02:15 de 91.170.108.99