Stack: Node.js + Express + TypeScript + Zod
Objectif pédagogique: maîtriser le versionning Git Flow, la qualité du code et l’automatisation CI/CD avec GitHub Actions.
Ce projet consiste à développer une API REST pour gérer les soumissions de projets étudiants.
Les données sont stockées dans un simple fichier db.json sans base de données.
L’objectif principal est de :
- Appliquer la méthode Git Flow
- Mettre en place des hooks de validation de code
- Automatiser les revues de code par IA
- Configurer une CI/CD basique avec GitHub Actions
projet-api/
│
├── src/
│ ├── app.ts
│ ├── server.ts
│ │
│ ├── routes/
│ │ └── projects.routes.ts
│ │
│ ├── controllers/
│ │ └── projects.controller.ts
│ │
│ ├── services/
│ │ └── projects.service.ts
│ │
│ ├── models/
│ │ └── project.schema.ts
│ │
│ ├── utils/
│ │ └── fileManager.ts
│ │
│ ├── middlewares/
│ │ └── errorHandler.ts
│ │
│ └── data/
│ └── db.json
│
├── eslint.config.ts
├── .gitignore
├── package.json
├── tsconfig.json
└── README.md
- Cloner le projet
git clone <repo-url>
cd projet-api- Installer les dépendances
npm install- Lancer en mode développement
npm run dev- Compiler pour la production
npm run build
npm startLe serveur démarre par défaut sur http://localhost:3000
npm run lintCorrige automatiquement les erreurs simples avec l’option --fix.
Prettier est intégré directement via ESLint (eslint-plugin-prettier/recommended).
- Les erreurs de formatage apparaissent comme des erreurs ESLint.
- Vous pouvez corriger tout le code d’un coup :
npm run lint -- --fix
Les hooks Git sont configurés pour bloquer tout commit qui ne respecte pas les standards de qualité.
| Branche | Rôle |
|---|---|
| main | Version stable / release |
| develop | Branche d’intégration |
| feature/* | Branche de développement individuel |
| hotfix/* | Correctifs urgents sur main |
Exemple de cycle :
git switch develop
git switch -c feature/add-post-project
git commit -m "feat: add POST /projects endpoint"
git push origin feature/add-post-projectPuis ouvrir une Pull Request vers develop.
Deux workflows seront ajoutés dans .github/workflows/ :
| Fichier | Rôle |
|---|---|
| ci.yml | Linting, build et test automatique |
| llm-review.yml | Revue de code automatisée (IA) + envoi mail |
Le .gitignore empêche certains fichiers d’être commités :
node_modules/
dist/
.env
.vscode/
.DS_Store
logs/
coverage/
.husky/_/db.json reste inclus dans Git car il sert à simuler une base de données et créer des conflits pour le TP.
- Équipe B3 Informatique – (Liste les personne du groupe)
- Encadrant : (votre enseignant)
- Technologie choisie : TypeScript + Express + Zod
| Commande | Description |
|---|---|
| npm run dev | Démarre le serveur en TypeScript |
| npm run lint | Analyse le code avec ESLint |
| npm run build | Compile le projet en JS |
| npm run start | Exécute la version compilée |
| npx husky install | Installe les hooks Git |
| git flow feature start | Crée une nouvelle feature |