Aller au contenu principal

Guide de Contribution

Guide pour contribuer au projet MyTelevision API et a sa documentation.


Principes

  1. Clarte -- Ecrire pour quelqu'un qui decouvre le projet
  2. Concision -- Aller droit au but, eviter le superflu
  3. Exactitude -- Verifier les informations, tester les exemples
  4. 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_position et description

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

  1. Creer une branche feature/backend/<description> ou bugfix/backend/<description>
  2. Implementer les modifications
  3. Ajouter les tests unitaires
  4. Creer une Pull Request vers develop
  5. Demander une review (1 approbation requise pour develop)
  6. Merger apres approbation

Documentation

  1. Creer une branche docs/<description-courte>
  2. Faire les modifications
  3. Creer une Pull Request
  4. Demander une review
  5. 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 :

  1. DTO dans application/dtos/{feature}/
  2. Service dans application/services/{feature}/
  3. Controller dans presentation/controllers/
  4. Module dans presentation/modules/

Configuration de l'Environnement

Variables Requises

VariableDescriptionExemple
DATABASE_URLConnexion PostgreSQLpostgresql://user:pass@localhost:5432/db
REDIS_HOSTHost Redislocalhost
REDIS_PORTPort Redis6379
JWT_SECRETSecret JWT (min 32 chars)your-secret-jwt-32-chars...
JWT_REFRESH_SECRETSecret refresh JWTyour-refresh-secret-32-chars...
TMDB_API_KEYCle API TMDbabc123...

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 changementAction requise
Nouveaux endpoints APIMettre a jour Swagger/OpenAPI + Postman
Nouvelles featuresDocumenter l'architecture et les flux
Modifications de configMettre a jour les variables d'environnement
Changements d'architectureMettre a jour les diagrammes
Changements de securiteDocumenter 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.log ou 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