Aller au contenu principal

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 standard
  • ADMIN -- Administrateur
  • SUPER_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, EPISODE
  • LIVETV, RADIO, PODCAST
  • NEWS, 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 page
  • total -- 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

CodeSignification
200OK
201Created
400Bad Request
401Unauthorized
403Forbidden
404Not Found
409Conflict
429Too Many Requests
500Internal 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

AcronymeSignification
ADRArchitecture Decision Record
APIApplication Programming Interface
AWSAmazon Web Services
CDNContent Delivery Network
CLICommand Line Interface
CORSCross-Origin Resource Sharing
CRUDCreate, Read, Update, Delete
CSPContent Security Policy
DBDatabase
DDoSDistributed Denial of Service
DNSDomain Name System
DRMDigital Rights Management
DTOData Transfer Object
E2EEnd-to-End
GDPRGeneral Data Protection Regulation
HLSHTTP Live Streaming
HTTPHypertext Transfer Protocol
HTTPSHTTP Secure
i18nInternationalization
IdPIdentity Provider
IPInternet Protocol
JSONJavaScript Object Notation
JWTJSON Web Token
MFAMulti-Factor Authentication
ORMObject-Relational Mapping
OWASPOpen Web Application Security Project
PIIPersonally Identifiable Information
PRPull Request
RBACRole-Based Access Control
RESTRepresentational State Transfer
RPSRequests Per Second
SASTStatic Application Security Testing
SDKSoftware Development Kit
SLAService Level Agreement
SQLStructured Query Language
SRESite Reliability Engineering
SSEServer-Sent Events
SSLSecure Sockets Layer
SSOSingle Sign-On
TCPTransmission Control Protocol
TDDTest-Driven Development
TLSTransport Layer Security
TMDbThe Movie Database
TTLTime To Live
UIUser Interface
URLUniform Resource Locator
UTCCoordinated Universal Time
UUIDUniversally Unique Identifier
VODVideo On Demand
VPCVirtual Private Cloud
WAFWeb Application Firewall
YAMLYAML Ain't Markup Language