Aller au contenu principal

Partie IV : Structure & Organisation du projet

Guide complet pour developpeurs - Architecture, modules et organisation de l'API MyTelevision v2.0


Table des matieres

  1. Modules principaux
  2. Relations entre modules
  3. Conformite a MASTER_SPEC.md
  4. Diagrammes
  5. Deliverables
  6. Acceptance Criteria
  7. Synthese et Checklist finale

1. Modules principaux

L'API MyTelevision est organisee en 22 modules fonctionnels repartis en 4 categories principales.

1.1 Modules d'authentification et utilisateurs

Auth Module

CaracteristiqueDescription
Role fonctionnelGestion de l'authentification utilisateur (inscription, connexion, refresh tokens, sessions multi-devices, deconnexion)
Service associeAuthService
Fichiers clessrc/presentation/modules/auth.module.ts, src/application/services/auth/auth.service.ts

Endpoints principaux (Client) :

MethodeEndpointDescription
POST/api/v2/auth/registerInscription nouvel utilisateur
POST/api/v2/auth/loginConnexion avec email/password
POST/api/v2/auth/refreshRenouvellement access token
POST/api/v2/auth/logoutDeconnexion (revocation session)
GET/api/v2/auth/meProfil utilisateur connecte
GET/api/v2/auth/sessionsListe des sessions actives
DELETE/api/v2/auth/sessions/{id}Revoquer une session
POST/api/v2/auth/forgot-passwordDemande de reinitialisation mot de passe
POST/api/v2/auth/reset-passwordReinitialisation mot de passe

Tips dev :

  • Utiliser le header X-Device-Id pour identifier l'appareil client
  • Le refresh token est valide 7 jours, l'access token 1 heure
  • Implementer un intercepteur HTTP pour auto-refresh cote client

Users Module

CaracteristiqueDescription
Role fonctionnelGestion des profils utilisateurs, devices, preferences
Service associeUsersService
Fichiers clessrc/presentation/modules/users.module.ts, src/application/services/users/users.service.ts

Endpoints principaux :

MethodeEndpointDescriptionAcces
GET/api/v2/users/profileProfil utilisateurClient
PUT/api/v2/users/profileMise a jour profilClient
GET/api/v2/admin/usersListe des utilisateursAdmin
GET/api/v2/admin/users/{id}Detail utilisateurAdmin
PUT/api/v2/admin/users/{id}/roleChanger roleAdmin
PUT/api/v2/admin/users/{id}/statusChanger statutAdmin
DELETE/api/v2/admin/users/{id}Supprimer (soft delete)Admin

RBAC Module (Role-Based Access Control)

CaracteristiqueDescription
Role fonctionnelGestion granulaire des roles et permissions, assignation des roles aux utilisateurs
Service associeRbacService

Hierarchie des roles par defaut :

SUPER_ADMIN > ADMIN > MODERATOR > USER
| | | |
| | | +-- Lecture contenu, favoris, historique
| | +-- + Moderation contenu (CRUD partiel)
| +-- + Gestion utilisateurs, settings
+-- + Tous les droits, RBAC, logs systeme

1.2 Modules de contenu

Movies Module

CaracteristiqueDescription
Role fonctionnelCatalogue des films avec auto-fill TMDb/IMDb, fichiers video multi-qualite, casting
Services associesMoviesService, TmdbService

Workflow TMDb Auto-fill :


Series Module

CaracteristiqueDescription
Role fonctionnelCatalogue des series TV avec saisons et episodes, auto-fill TMDb

Endpoints principaux :

MethodeEndpointDescriptionAcces
GET/api/v2/seriesListe des seriesPublic
GET/api/v2/series/{id}Detail seriePublic
GET/api/v2/series/{id}/seasonsSaisons d'une seriePublic
GET/api/v2/series/{id}/seasons/{seasonNum}/episodesEpisodes d'une saisonPublic
POST/api/v2/admin/seriesCreer une serieAdmin
POST/api/v2/admin/series/{id}/seasonsAjouter une saisonAdmin
POST/api/v2/admin/series/{seriesId}/seasons/{seasonId}/episodesAjouter un episodeAdmin

Autres modules de contenu

ModuleRoleEndpoints cles
Live TVChaines TV en direct, categoriesGET /livetv/channels, GET /livetv/categories
RadioStations radio avec streaming audioGET /radio/channels, GET /radio/featured
PodcastsCollections et episodes de podcastsGET /podcasts, GET /podcasts/{id}/episodes
Live EventsEvenements en direct (sports, concerts)GET /live-events, GET /live-events/live-now
NewsActualites et articles de presseGET /news, GET /news/recent

1.3 Modules transversaux

ModuleRoleEndpoints cles
StreamingSecurite du streaming : tokens, URLs signees, DRMPOST /streaming/generate-token
CatalogGestion centralisee des genres et categoriesGET /catalog/genres
FavoritesFavoris utilisateur (films, series, chaines, etc.)POST /favorites, GET /favorites
Watch HistorySuivi de progression de visionnagePOST /watch-history, GET /watch-history/continue-watching

1.4 Modules de support et configuration

ModuleRoleEndpoints cles
SettingsConfiguration globale de l'applicationGET /settings, PUT /admin/settings/{key}
SupportSysteme de tickets de supportPOST /support/tickets, GET /support/tickets
NotificationsNotifications push (Firebase FCM), broadcastGET /notifications, POST /admin/notifications/send
CountriesPays (ISO codes, drapeaux)GET /countries
LanguagesLangues disponiblesGET /languages
SlidersCarrousels promotionnelsGET /sliders
BannersBannieres publicitairesGET /banners

2. Relations entre modules

2.1 Dependances inter-modules

2.2 Flux de donnees typiques

Creation d'un film avec auto-fill TMDb :

Generation d'un token de streaming :


3. Conformite a MASTER_SPEC.md

3.1 Checklist de conformite

Entites et ressources

RessourceStatutNotes
Live TVConformeChannels avec categories, streaming multi-URLs
Live EventsConformeCategories, dates debut/fin, location
MoviesConformeTMDb auto-fill, cast/directors, multi-qualite
TV SeriesConformeSeasons/Episodes, TMDb auto-fill
PodcastsConformePodcasters, Collections, Episodes
RadioConformeChannels multi-categories, streaming
NewsConformeArticles, categories, media attachments
UsersConformeRoles, subscriptions, devices, sessions
SettingsConformeGroupes: general, firebase, admob, tmdb, storage, etc.
Support SystemConformeTickets, messages, priorites

Authentification et securite

ExigenceStatutNotes
JWT + Refresh TokensConformeAccess 1h, Refresh 7j, rotation
Firebase Auth CompatibleConformefirebaseUid sur User
RBACConformeRoles, Permissions, UserRoleAssignment
Streaming TokensConformeIP binding, expiry, usage limit
DRM (AES-128)ConformeDrmKey model, rotation support
Rate LimitingConforme@nestjs/throttler (3 tiers)

3.2 Recommandations d'amelioration

  1. Domain Layer : Creer des entites de domaine pures pour decoupler de Prisma
  2. Firebase Migration : Documenter le processus de migration des utilisateurs Firebase existants
  3. DRM avance : Planifier l'integration Widevine/PlayReady pour les contenus premium
  4. Observability : Ajouter OpenTelemetry pour le tracing distribue

4. Diagrammes

4.1 Architecture API globale

4.2 Clean Architecture - Couches


5. Deliverables

#LivrableDescriptionStatut
1Architecture documentCe guide (Parties I a IV)Complet
2Prisma Schema50+ modeles, relations, indexes, enumsComplet
3Migrations PrismaHistorique des migrations versionneesComplet
4SeedsDonnees initiales (genres, settings, admin)Complet
5TMDb Auto-fill ServiceImport automatique films/seriesComplet
6Cloudflare R2 IntegrationUpload/serve media via S3-compatibleComplet
7Hybrid AuthenticationJWT + Firebase UID + SessionsComplet
8RBAC ModuleRoles, Permissions, AssignmentsComplet
9Admin/Client API Split/api/v2/... vs /api/v2/admin/...Complet
10Streaming SecurityTokens, IP binding, DRM AES-128Complet
11Content ModulesMovies, Series, LiveTV, Radio, Podcasts, News, EventsComplet
12Swagger/OpenAPIDocumentation 100% coverageComplet
13Docker + docker-composeStack complete (API, PG, Redis)Complet
14Unit TestsPattern etabli, JestEn cours
15E2E TestsSuperTest + JestEn cours

6. Acceptance Criteria

Checklist d'acceptance

API & Modules

  • 100% des modules definis dans MASTER_SPEC.md sont implementes
  • Swagger/OpenAPI 3 couvre 100% des endpoints
  • Validation des DTOs avec class-validator
  • Pagination standardisee (page, limit, meta)
  • Codes d'erreur documentes (400, 401, 403, 404, 500)

Base de donnees

  • Schema Prisma complet avec toutes les entites
  • Relations definies (1:1, 1:N, N:M)
  • Indexes optimises pour les requetes frequentes
  • Soft delete sur les entites principales
  • Seeds fonctionnels pour donnees initiales

Authentification & Securite

  • JWT Access + Refresh tokens fonctionnels
  • Rotation des refresh tokens implementee
  • Sessions multi-devices supportees
  • RBAC complet (Roles, Permissions, Assignments)
  • Rate limiting configure (3 tiers)
  • Streaming tokens avec IP binding

Infrastructure

  • Docker + docker-compose fonctionnels
  • PostgreSQL 16 configure
  • Redis 7 pour cache et sessions
  • Health checks configures
  • Path aliases TypeScript configures

Tests (Objectifs)

  • Coverage >= 80% (objectif)
  • Pattern de tests etabli
  • Tests E2E complets (en cours)

7. Synthese et Checklist finale

Synthese du guide

PartieContenuPublic cible
IConsommation API, Swagger, Auth, Bonnes pratiquesFrontend / Mobile
IIConfiguration locale, Docker, Variables DEVBackend juniors
IIIConfiguration PROD, CI/CD, Securite, RollbackDevOps / Seniors
IVArchitecture, Modules, Relations, DiagrammesTous niveaux

Checklist du nouveau developpeur

Premier jour

  • Lire README.md et CLAUDE.md
  • Installer les prerequis (Node 20, Docker, Git)
  • Cloner le repo et configurer .env
  • Lancer npm run docker:up
  • Verifier http://localhost:3000/api/docs
  • Tester un endpoint public (GET /api/v2/health)

Premiere semaine

  • Lire Partie I (Consommation API)
  • Lire Partie II & III (Configuration)
  • Comprendre le schema Prisma (prisma/schema.prisma)
  • Explorer Prisma Studio (npm run prisma:studio)
  • Creer un compte test via /auth/register
  • Tester les endpoints avec Postman/Insomnia

Avant de contribuer

  • Lire GITFLOW.md en entier
  • Comprendre les conventions de commit
  • Lire Partie IV (Architecture)
  • Identifier le module concerne
  • Verifier les tests existants
  • Creer une branche feature/backend/...

Avant de creer une PR

  • Tests passent (npm run test)
  • Lint OK (npm run lint)
  • Build OK (npm run build)
  • Swagger mis a jour
  • Commit messages conventionnels
  • PR vers develop (pas main)

Ressources essentielles

RessourceURL / Chemin
Swagger UIhttp://localhost:3000/api/docs
Prisma Studiohttp://localhost:5555 (apres npm run prisma:studio)
MASTER_SPEC./MASTER_SPEC.md
GITFLOW./GITFLOW.md

Recommandations d'amelioration

Court terme (1-2 sprints)

  1. Completer les tests pour atteindre 80% de coverage
  2. Configurer GitHub Actions pour CI/CD automatise
  3. Ajouter OpenTelemetry pour le tracing distribue
  4. Documenter l'API avec Redoc en complement de Swagger

Moyen terme (1-2 mois)

  1. Implementer GraphQL en complement de REST
  2. Ajouter Webhooks pour les evenements (nouveau contenu, ticket, etc.)
  3. SDK TypeScript auto-genere depuis OpenAPI
  4. Pagination cursor-based pour les gros datasets

Long terme (roadmap)

  1. Widevine/PlayReady DRM pour les contenus premium
  2. Multi-tenancy si expansion vers d'autres marches
  3. Event Sourcing pour l'audit trail complet
  4. Microservices si la charge le justifie

Changelog

VersionDateModifications
1.0.02025-12-12Version initiale Partie IV

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


Ce guide est un document vivant. Proposez des ameliorations via GitHub Issues ou Pull Requests.