Glossaire technique
Definitions et terminologie utilisees dans le projet MyTelevision API.
Architecture
Clean Architecture
Pattern architectural qui separe les responsabilites en couches, avec des dependances pointant vers l'interieur (vers la couche domaine).
Couches du projet :
- Domain -- Entites metier et regles
- Application -- Cas d'utilisation et services
- Infrastructure -- Dependances externes
- Presentation -- Couche HTTP/API
Controller
Classe NestJS qui gere les requetes HTTP entrantes et retourne les reponses. Situe dans src/presentation/controllers/.
DTO (Data Transfer Object)
Objet qui definit la forme des donnees pour les requetes/reponses API. Utilise les decorateurs class-validator pour la validation.
export class CreateMovieDto {
@IsString()
title: string;
}
Guard
Composant NestJS qui determine si une requete doit etre traitee par un handler de route. Utilise pour l'authentification et l'autorisation.
Interceptor
Composant NestJS qui transforme les donnees avant/apres l'execution du handler de route. Utilise pour le logging, le cache et la transformation des reponses.
Module
Unite organisationnelle NestJS qui regroupe les composants lies (controllers, services, etc.).
Provider
Toute classe qui peut etre injectee comme dependance. Les services, repositories et factories sont tous des providers.
Service
Classe de logique metier qui encapsule les operations du domaine. Situe dans src/application/services/.
Authentification & Securite
Access Token
Token JWT de courte duree (15 minutes par defaut) utilise pour authentifier les requetes API.
Bearer Token
Type de token d'authentification envoye dans le header Authorization: Bearer <token>.
bcrypt
Algorithme de hachage utilise pour stocker les mots de passe de maniere securisee (cost factor 12 en production).
Firebase Auth
Service d'authentification Google utilise comme fournisseur d'identite (IdP) pour le login social (Google, Apple, Facebook).
JWT (JSON Web Token)
Format de token compact et URL-safe pour transmettre des claims de maniere securisee entre les parties.
MFA (Multi-Factor Authentication)
Mecanisme de securite necessitant plusieurs methodes de verification. Supporte via Firebase.
OAuth 2.0
Framework d'autorisation permettant aux applications tierces d'obtenir un acces limite.
PIN
Code personnel a 4-6 chiffres pour proteger l'acces a un profil. Protection anti brute-force : 5 tentatives max, blocage de 15 minutes.
RBAC (Role-Based Access Control)
Methode de controle d'acces ou les permissions sont assignees a des roles, et les utilisateurs sont assignes a des roles.
Roles dans ce projet :
USER-- Utilisateur standardADMIN-- AdministrateurSUPER_ADMIN-- Super administrateur
Refresh Token
Token de longue duree (7 jours par defaut) utilise pour obtenir de nouveaux access tokens sans re-authentification.
Session
Enregistrement cote serveur de l'etat authentifie de l'utilisateur. Stocke dans Redis avec support de rotation de tokens.
Social Account
Compte d'un fournisseur d'identite externe (Google, Apple, etc.) lie a un utilisateur interne.
Domaine metier
Account
Entite utilisateur de premier niveau dans le systeme multi-tenant. Contient email, mot de passe, et possede des profils.
Access Type
Classification de la disponibilite du contenu :
- FREE -- Disponible pour tous les utilisateurs
- PREMIUM -- Achat unique requis
- SUBSCRIPTION -- Abonnement actif requis
Content Status
Etat de publication du contenu :
- DRAFT -- Non visible pour les utilisateurs
- PUBLISHED -- Visible et accessible
- ARCHIVED -- Cache mais conserve
- COMING_SOON -- Annonce mais pas encore disponible
Kids Profile
Type de profil special avec controles parentaux (ratings d'age, restrictions de contenu, limites de temps).
Media Type
Enumeration des categories de contenu :
MOVIE,SERIES,EPISODELIVETV,RADIO,PODCASTNEWS,EVENT,REPLAY
Multi-tenant
Architecture permettant de servir plusieurs clients (tenants) depuis une meme instance.
Profile
Entite sous-compte representant un spectateur individuel. Maximum 4 profils par compte. Types : STANDARD, KIDS.
Reaction
Engagement utilisateur (LIKE/DISLIKE) sur un contenu. Chaque utilisateur peut avoir une seule reaction par contenu.
Replay
Contenu de diffusion passee organise par categorie (Sport, Culture, Musique, etc.).
Signal
Evenement du systeme de recommandation trackant le comportement utilisateur (vues, completions, progression).
Tenant
Espace de noms multi-tenant representant une instance white-label de la plateforme.
View
Impression de contenu trackee avec protection anti-abus (cooldown de 30 minutes).
Watch History
Historique de visionnage de l'utilisateur pour la reprise de lecture.
Base de donnees & ORM
Migration
Changement de schema versionne applique a la base de donnees. Cree avec Prisma Migrate.
npm run prisma:migrate:dev -- --name add_feature
Prisma
ORM Node.js/TypeScript fournissant un acces type-safe a la base de donnees.
Prisma Client
Client de base de donnees auto-genere et type-safe. Regenerer apres les changements de schema :
npm run prisma:generate
Prisma Schema
Fichier de definition du schema de base de donnees (prisma/schema.prisma) definissant les modeles, relations et enums.
Prisma Studio
Navigateur et editeur visuel de base de donnees :
npm run prisma:studio
Seed
Script de population initiale des donnees pour le developpement/test.
Soft Delete
Pattern de suppression ou les enregistrements sont marques comme supprimes (deletedAt) plutot que physiquement retires.
Transaction
Operation de base de donnees assurant l'execution atomique de plusieurs requetes.
await prisma.$transaction([
prisma.user.update(...),
prisma.profile.create(...)
]);
DevOps & Infrastructure
cAdvisor
Exporteur de metriques de conteneurs pour Docker/Kubernetes.
CI/CD
Continuous Integration / Continuous Deployment -- pipeline automatise de build, test et deploiement.
Docker Compose
Outil pour definir des applications Docker multi-conteneurs.
Docker Secret
Moyen securise de stocker des donnees sensibles pour les services Docker Swarm.
Grafana
Plateforme de visualisation et de tableaux de bord pour les metriques.
Helm
Gestionnaire de paquets Kubernetes pour le deploiement d'applications.
HPA (Horizontal Pod Autoscaler)
Ressource Kubernetes qui scale automatiquement le nombre de pods selon les metriques.
IaC (Infrastructure as Code)
Gestion de l'infrastructure via du code (Terraform dans ce projet).
K8s (Kubernetes)
Plateforme d'orchestration de conteneurs pour le deploiement et le scaling automatises.
Prometheus
Toolkit de collecte de metriques et d'alerting.
Terraform
Outil d'Infrastructure as Code pour le provisioning de ressources cloud.
API & HTTP
Endpoint
Chemin URL qui accepte les requetes HTTP. Exemple : GET /api/v2/movies
OpenAPI/Swagger
Format de specification API et interface de documentation. Disponible sur /api/docs.
Pagination
Pattern pour retourner de grands ensembles de donnees par pages :
page-- Numero de la page courante (1-indexed)limit-- Nombre d'items par pagetotal-- Nombre total d'items
Rate Limiting
Mecanisme pour limiter la frequence des requetes. Tiers :
- Short : 3 req/sec
- Medium : 20 req/10sec
- Long : 100 req/min
REST
Representational State Transfer -- style architectural pour les APIs web.
Codes de statut HTTP
| Code | Signification |
|---|---|
200 | OK |
201 | Created |
400 | Bad Request |
401 | Unauthorized |
403 | Forbidden |
404 | Not Found |
409 | Conflict |
429 | Too Many Requests |
500 | Internal Server Error |
Tests
E2E (End-to-End)
Test qui verifie les flux utilisateur complets a travers le systeme.
Integration Test
Test qui verifie l'interaction entre plusieurs composants.
Jest
Framework de test JavaScript utilise pour tous les types de tests.
K6
Outil de test de charge pour les benchmarks de performance.
Mock
Dependance simulee remplacant l'implementation reelle dans les tests.
Supertest
Bibliotheque d'assertions HTTP pour tester les applications Express/NestJS.
Unit Test
Test qui verifie une unite isolee (fonction/classe).
Acronymes
| Acronyme | Signification |
|---|---|
| ADR | Architecture Decision Record |
| API | Application Programming Interface |
| AWS | Amazon Web Services |
| CDN | Content Delivery Network |
| CLI | Command Line Interface |
| CORS | Cross-Origin Resource Sharing |
| CRUD | Create, Read, Update, Delete |
| CSP | Content Security Policy |
| DB | Database |
| DDoS | Distributed Denial of Service |
| DNS | Domain Name System |
| DRM | Digital Rights Management |
| DTO | Data Transfer Object |
| E2E | End-to-End |
| GDPR | General Data Protection Regulation |
| HLS | HTTP Live Streaming |
| HTTP | Hypertext Transfer Protocol |
| HTTPS | HTTP Secure |
| i18n | Internationalization |
| IdP | Identity Provider |
| IP | Internet Protocol |
| JSON | JavaScript Object Notation |
| JWT | JSON Web Token |
| MFA | Multi-Factor Authentication |
| ORM | Object-Relational Mapping |
| OWASP | Open Web Application Security Project |
| PII | Personally Identifiable Information |
| PR | Pull Request |
| RBAC | Role-Based Access Control |
| REST | Representational State Transfer |
| RPS | Requests Per Second |
| SAST | Static Application Security Testing |
| SDK | Software Development Kit |
| SLA | Service Level Agreement |
| SQL | Structured Query Language |
| SRE | Site Reliability Engineering |
| SSE | Server-Sent Events |
| SSL | Secure Sockets Layer |
| SSO | Single Sign-On |
| TCP | Transmission Control Protocol |
| TDD | Test-Driven Development |
| TLS | Transport Layer Security |
| TMDb | The Movie Database |
| TTL | Time To Live |
| UI | User Interface |
| URL | Uniform Resource Locator |
| UTC | Coordinated Universal Time |
| UUID | Universally Unique Identifier |
| VOD | Video On Demand |
| VPC | Virtual Private Cloud |
| WAF | Web Application Firewall |
| YAML | YAML Ain't Markup Language |