Aller au contenu principal

Parties II & III : Configuration & Deploiement

Guide complet pour developpeurs - Configuration locale, production et deploiement de l'API MyTelevision v2.0


Table des matieres

Partie II : Configuration du projet en local

  1. Installation & Clonage
  2. Containers & Services
  3. Variables d'environnement (mode DEV)
  4. Donnees & Base de donnees
  5. Architecture du projet

Partie III : Configuration globale

  1. Differences DEV / PROD
  2. Variables d'environnement PROD
  3. Deploiement & CI/CD
  4. Securite & Observabilite
  5. Rollback & Incident Management

PARTIE II : Configuration du projet en local

1. Installation & Clonage

Pre-requis systeme

OutilVersion minimaleCommande de verificationNotes
Node.js>= 18.0.0 (recommande: 20.x LTS)node --versionRequis pour executer l'application NestJS
npm>= 9.xnpm --versionGestionnaire de paquets Node.js
Docker>= 24.xdocker --versionNecessaire pour PostgreSQL et Redis
Docker Compose>= 2.xdocker-compose --versionOrchestration des services
Git>= 2.xgit --versionControle de version

Clonage et installation

# Cloner le repository
git clone https://github.com/XKS-MYTV4JS/mytelevision-restfullapijsv4.git
cd mytelevision-restfullapijsv4

# Installer les dependances
npm install

# Copier la configuration
cp .env.example .env

2. Containers & Services

Demarrage des services Docker

# Demarrer PostgreSQL et Redis
npm run docker:up

# Verifier les conteneurs
docker ps

# Voir les logs
npm run docker:logs

Services disponibles

ServicePortDescription
PostgreSQL5432Base de donnees principale
Redis6379Cache et sessions
API3000Application NestJS

Docker Compose - Profils

# Developpement
docker compose --profile dev up -d

# Staging
docker compose --profile staging up -d

# Production
docker compose --profile prod up -d

# Local (backward compatible)
docker compose --profile local up -d

3. Variables d'environnement (mode DEV)

Variables essentielles pour le developpement

# Application
NODE_ENV=development
PORT=3000
API_PREFIX=api/v2

# Database
DATABASE_URL=postgresql://postgres:postgres@localhost:5432/mytelevision_dev

# Redis
REDIS_HOST=localhost
REDIS_PORT=6379

# JWT
JWT_SECRET=your-dev-jwt-secret-min-32-characters-long
JWT_REFRESH_SECRET=your-dev-refresh-secret-min-32-chars
JWT_EXPIRATION=3600
JWT_REFRESH_EXPIRATION=604800

# CORS
CORS_ORIGINS=http://localhost:3000,http://localhost:4200

# TMDb (optionnel en dev)
TMDB_API_KEY=your-tmdb-api-key

4. Donnees & Base de donnees

Prisma - Commandes essentielles

# Generer le client Prisma apres modification du schema
npm run prisma:generate

# Creer et appliquer les migrations (developpement)
npm run prisma:migrate:dev

# Appliquer les migrations existantes (production)
npm run prisma:migrate:deploy

# Ouvrir Prisma Studio (GUI)
npm run prisma:studio

# Peupler la base de donnees
npm run prisma:seed

Utilisateurs par defaut (seed)

RoleEmailMot de passe
SUPER_ADMIN[email protected]SuperAdmin@123!
ADMIN[email protected]Admin@123!
MODERATOR[email protected]Moderator@123!
USER[email protected]User@123!

Demarrage complet

# 1. Demarrer les services
npm run docker:up

# 2. Appliquer les migrations
npm run prisma:migrate:dev

# 3. Generer le client
npm run prisma:generate

# 4. Peupler la base
npm run prisma:seed

# 5. Demarrer l'application
npm run start:dev

5. Architecture du projet

Structure des repertoires

src/
+-- application/ # Couche Application
| +-- dtos/ # Data Transfer Objects
| | +-- auth/ # DTOs Auth
| | +-- movies/ # DTOs Movies
| | +-- series/ # DTOs Series
| | +-- ...
| +-- services/ # Business Logic Services
| +-- auth/
| +-- movies/
| +-- tmdb/
| +-- ...
|
+-- infrastructure/ # Couche Infrastructure
| +-- auth/ # Guards et Strategies
| +-- cache/ # Redis Service
| +-- config/ # Modules de configuration
| +-- database/prisma/ # Prisma Service
| +-- storage/ # Cloudflare R2
| +-- i18n/ # Internationalisation
|
+-- presentation/ # Couche Presentation
| +-- controllers/
| | +-- api/v2/ # Controllers API publique
| | +-- admin/ # Controllers Admin
| +-- modules/ # NestJS Feature Modules
|
+-- shared/ # Utilities partagees
| +-- constants/
| +-- decorators/
| +-- filters/
| +-- interceptors/
| +-- types/
|
+-- app.module.ts # Module racine
+-- main.ts # Point d'entree

PARTIE III : Configuration globale

6. Differences DEV / PROD

AspectDeveloppementProduction
NODE_ENVdevelopmentproduction
Base de donneesPostgreSQL local (Docker)PostgreSQL RDS/Cloud
RedisRedis local (Docker)ElastiCache/Redis Cloud
JWT SecretsValeurs par defautSecrets forts (32+ chars)
CORSlocalhost:*Domaines specifiques
Rate LimitingRelacheStrict (3 tiers)
LoggingConsoleStructured (JSON) + agregation
TLS/SSLNonOui (obligatoire)
CompressionNongzip active
Trust Proxyfalsetrue

7. Variables d'environnement PROD

Variables requises par profil

Variabledevstagingprod
JWT_SECRETdefaultrequiredrequired
JWT_REFRESH_SECRETdefaultrequiredrequired
STREAMING_SIGNING_SECRETdefaultrequiredrequired
CORS_ORIGINSdefaultrequiredrequired
TRUST_PROXYfalsetruetrue

Variables Firebase (Social Login)

FIREBASE_PROJECT_ID=your-project-id
FIREBASE_PRIVATE_KEY="-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----\n"
FIREBASE_CLIENT_EMAIL=[email protected]

Variables Cloudflare R2 (Storage)

R2_ACCOUNT_ID=your-cloudflare-account-id
R2_ACCESS_KEY_ID=your-r2-access-key
R2_SECRET_ACCESS_KEY=your-r2-secret-key
R2_BUCKET_NAME=mytelevision-media
R2_PUBLIC_URL=https://media.mytelevision.app

8. Deploiement & CI/CD

Pipeline GitHub Actions

Le pipeline CI (.github/workflows/ci.yml) comprend :

JobDescriptionBloquant
lintESLint + Prettier checkOui
testUnit tests + coverageOui
buildTypeScript compilationOui
securitynpm audit (high/critical)Oui
monitoringValidation config Prometheus/GrafanaOui
codeqlCodeQL SAST analysisOui
license-checkConformite des licencesOui
quality-gateVerification finaleOui

Docker Deployment

# Build et demarrage en staging
docker compose --profile staging up -d --build

# Voir les logs
docker logs mytv-api-staging --tail 100 -f

# Executer le seed
docker exec -it mytv-api-staging ./node_modules/.bin/prisma db seed

# Acces au shell du conteneur
docker exec -it mytv-api-staging sh

Pre-commit Hooks (Husky)

HookAction
pre-commitlint-staged + TypeScript check + secret detection
commit-msgValidation Conventional Commits

9. Securite & Observabilite

Securite en production

  • Docker Secrets : Utiliser docker-compose.production.yml pour monter les secrets via /run/secrets/
  • Helmet : Headers de securite (HSTS, XSS, etc.)
  • Rate Limiting : 3 tiers via @nestjs/throttler
  • CORS : Origines strictement definies
  • Validation : Tous les DTOs valides via class-validator

Stack Monitoring

# Demarrer le monitoring
docker-compose -f docker-compose.yml -f docker-compose.monitoring.yml up -d

# Acces aux dashboards
# Grafana: http://localhost:3001 (admin/admin)
# Prometheus: http://localhost:9090
# Alertmanager: http://localhost:9093
# API Metrics: http://localhost:3000/metrics

Dashboards Grafana

DashboardUIDMetriques
API Overviewapi-overviewRequetes, latence, erreurs, memoire
Auth & Sessionsauth-sessionsLogins, sessions, evenements securite
Databasedatabase-perfPostgreSQL connections, queries
Business Metricsbusiness-metricsUsers, payments, engagement
InfrastructureinfrastructureCPU, memoire, disque, reseau

10. Rollback & Incident Management

Procedure de rollback

# 1. Identifier la version precedente
docker images | grep mytv-api

# 2. Revenir a l'image precedente
docker compose --profile prod down
docker tag mytv-api:previous mytv-api:latest
docker compose --profile prod up -d

# 3. Verifier le sante
curl https://api.mytelevision.app/api/v2/health

Rollback Prisma (base de donnees)

# Lister les migrations
npx prisma migrate status

# Rollback d'une migration (dev uniquement)
npx prisma migrate reset

# En production : creer une migration de correction
npx prisma migrate dev --name fix_rollback_xyz
npx prisma migrate deploy

Incident Management

  1. Detection : Alertmanager + Grafana dashboards
  2. Triage : Evaluer la severite (P1-P4)
  3. Mitigation : Rollback ou hotfix
  4. Resolution : Fix et deploiement
  5. Post-mortem : Analyse root cause + actions correctives

Changelog

VersionDateModifications
1.0.02025-12-12Version initiale Parties II & III

Derniere mise a jour : 12 decembre 2025 Auteurs : Equipe MyTelevision + Claude Code AI