Guide de Contribution
Guide pour contribuer au projet MyTelevision API et a sa documentation.
Principes
- Clarte -- Ecrire pour quelqu'un qui decouvre le projet
- Concision -- Aller droit au but, eviter le superflu
- Exactitude -- Verifier les informations, tester les exemples
- Coherence -- Suivre les conventions etablies
Quick Start
# Cloner le projet
git clone https://github.com/XKS-MYTV4JS/mytelevision-restfullapijsv4.git
cd mytelevision-restfullapijsv4
# Installer les dependances
npm install
# Configurer l'environnement
cp .env.example .env
# Editer .env avec les valeurs requises
# Demarrer les services
npm run docker:up
# Initialiser la base de donnees
npm run prisma:migrate:dev
npm run prisma:generate
# Demarrer en mode developpement
npm run start:dev
Commandes Utiles
Developpement
npm run start:dev # Hot-reload
npm run start:debug # Avec debugger
npm run build # Build production
Base de Donnees
npm run prisma:generate # Generer client Prisma
npm run prisma:migrate:dev # Migrations dev
npm run prisma:studio # GUI Prisma
npm run prisma:seed # Seeder la DB
Tests
npm run test # Tests unitaires
npm run test:watch # Mode watch
npm run test:cov # Couverture
npm run test:e2e # End-to-end
Qualite du Code
npm run lint # ESLint + fix
npm run format # Prettier
npm run security:audit # npm audit
Workflow de Developpement
1. Creer une branche depuis develop
git checkout develop
git pull origin develop
git checkout -b feature/backend/my-feature
2. Commits conventionnels
git commit -m "feat(movies): add filtering by genre"
Convention de Commits
Le projet utilise Conventional Commits. Les types valides sont : feat, fix, docs, test, refactor, perf, ci, chore. Voir la page Standards de Code pour les details.
3. Garder la branche a jour
git fetch origin
git rebase origin/develop
4. Pousser et creer la PR
git push -u origin feature/backend/my-feature
# Creer une Pull Request vers develop
Checklist Pre-PR
Avant de creer une Pull Request, verifier :
- Tests passes (
npm run test) - Lint OK (
npm run lint) - Build OK (
npm run build) - Couverture >= 80%
- Documentation mise a jour
- Collection Postman mise a jour (si nouveaux endpoints)
- Commits conventionnels utilises
Structure d'un Document
Lors de la contribution a la documentation, suivre cette structure :
# Titre du Document
> Description courte (1-2 phrases)
## Table des matieres (si > 3 sections)
## Prerequisites (si applicable)
## Contenu Principal
### Sous-sections
## Exemples
## Voir aussi
- [Lien vers doc liee]
Conventions de Nommage des Fichiers
- Utiliser des minuscules et tirets :
getting-started.md - Les fichiers Docusaurus doivent avoir un frontmatter avec
title,sidebar_positionetdescription
Diagrammes
- Preferer Mermaid pour les diagrammes versionnables (supporte nativement par Docusaurus)
- Stocker les images dans
static/img/ - Optimiser la taille des images (< 500KB si possible)
Blocs de Code
- Toujours specifier le langage dans les blocs de code
- Inclure des commentaires explicatifs
- Tester les exemples avant de les publier
Processus de Modification
Code
- Creer une branche
feature/backend/<description>oubugfix/backend/<description> - Implementer les modifications
- Ajouter les tests unitaires
- Creer une Pull Request vers
develop - Demander une review (1 approbation requise pour develop)
- Merger apres approbation
Documentation
- Creer une branche
docs/<description-courte> - Faire les modifications
- Creer une Pull Request
- Demander une review
- Merger apres approbation
Structure du Projet
src/
├── application/ # Services, DTOs (logique metier)
├── infrastructure/ # Config, DB, Cache (concerns externes)
├── presentation/ # Controllers (API endpoints)
└── shared/ # Utils, Types (partages)
Pattern Modulaire
Chaque fonctionnalite suit le pattern NestJS :
- DTO dans
application/dtos/{feature}/ - Service dans
application/services/{feature}/ - Controller dans
presentation/controllers/ - Module dans
presentation/modules/
Configuration de l'Environnement
Variables Requises
| Variable | Description | Exemple |
|---|---|---|
DATABASE_URL | Connexion PostgreSQL | postgresql://user:pass@localhost:5432/db |
REDIS_HOST | Host Redis | localhost |
REDIS_PORT | Port Redis | 6379 |
JWT_SECRET | Secret JWT (min 32 chars) | your-secret-jwt-32-chars... |
JWT_REFRESH_SECRET | Secret refresh JWT | your-refresh-secret-32-chars... |
TMDB_API_KEY | Cle API TMDb | abc123... |
Docker
# Demarrer PostgreSQL et Redis
npm run docker:up
# Arreter les services
npm run docker:down
# Voir les logs
npm run docker:logs
Mise a Jour de la Documentation
Lors de toute modification du projet, il faut mettre a jour :
| Type de changement | Action requise |
|---|---|
| Nouveaux endpoints API | Mettre a jour Swagger/OpenAPI + Postman |
| Nouvelles features | Documenter l'architecture et les flux |
| Modifications de config | Mettre a jour les variables d'environnement |
| Changements d'architecture | Mettre a jour les diagrammes |
| Changements de securite | Documenter les nouvelles pratiques |
Code Review Checklist
En tant que reviewer, verifier :
- Le code suit les standards du projet
- Les tests couvrent la nouvelle fonctionnalite
- La documentation Swagger/OpenAPI est mise a jour
- La collection Postman est mise a jour
- Pas de
console.logou code de debug - La gestion des erreurs est appropriee
- Les considerations de securite sont adressees
- Aucune donnee sensible n'est exposee
- Les commits suivent la convention Conventional Commits