diff --git a/dossier-de-projet-cda.md b/dossier-de-projet-cda.md
index 6144f56..6559d28 100644
--- a/dossier-de-projet-cda.md
+++ b/dossier-de-projet-cda.md
@@ -1,85 +1,140 @@
# Sommaire
1. [Introduction au projet](#1-introduction-au-projet)
+
- [Objectifs principaux](#objectifs-principaux-)
2. [Liste des compétences couvertes par le projet](#2-liste-des-compétences-couvertes-par-le-projet)
3. [Cahier des charges](#3-cahier-des-charges)
- 3.1 [Spécifications fonctionnelles](#31-spécifications-fonctionnelles)
- - [Gestion des utilisateurs et authentification](#gestion-des-utilisateurs-et-authentification-mfa-sessions)
- - [Gestion et partage de contenus](#gestion-et-partage-de-contenus-memes--gifs)
- - [Sécurisation avancée](#sécurisation-avancée-cryptographie-pgp--post-quantique)
- - [Panneau d’Administration et Modération](#panneau-dadministration-et-modération)
- - [Système de recherche par catégories et tags](#système-de-recherche-par-catégories-et-tags)
- 3.2 [Spécifications non fonctionnelles](#32-spécifications-non-fonctionnelles)
- - [Performance & Réactivité](#performance--réactivité-redis-caching)
- - [Observabilité et Stabilité](#observabilité-et-stabilité-sentry-throttler)
- - [Scalabilité](#scalabilité-stockage-s3minio)
- - [Expérience utilisateur (UX)](#expérience-utilisateur-ux)
- - [SEO (Search Engine Optimization)](#seo-search-engine-optimization)
- - [Accessibilité (A11Y)](#accessibilité-a11y)
- - [Maintenance et Extensibilité](#maintenance-et-extensibilité)
- - [Tests automatisés](#tests-automatisés)
+ - 3.1 [Spécifications fonctionnelles](#31-spécifications-fonctionnelles)
- 3.3 [Charte graphique](#33-charte-graphique)
- - [Couleurs](#couleurs)
- - [Police d’écriture](#police-décriture)
- - [Logotype et image de marque](#logotype-et-image-de-marque)
+ - [Gestion des utilisateurs et authentification (MFA, Sessions)](#gestion-des-utilisateurs-et-authentification-mfa-sessions)
- 3.4 [Spécifications de l’infrastructure](#34-spécifications-de-linfrastructure-docker-postgresql-redis-minio)
+ - [Gestion et partage de contenus (Memes & GIFs)](#gestion-et-partage-de-contenus-memes--gifs)
+
+ - [Sécurisation avancée (Cryptographie PGP & Post-Quantique)](#sécurisation-avancée-cryptographie-pgp--post-quantique)
+
+ - [Panneau d’Administration et Modération](#panneau-dadministration-et-modération)
+
+ - [Système de recherche par catégories et tags](#système-de-recherche-par-catégories-et-tags)
+
+ - 3.2 [Spécifications non fonctionnelles](#32-spécifications-non-fonctionnelles)
+
+ - [Performance & Réactivité (Redis, Caching)](#performance--réactivité-redis-caching)
+
+ - [Observabilité et Sécurité du Transport (Sentry, Helmet, Throttler)](#observabilité-et-sécurité-du-transport-sentry-helmet-throttler)
+
+ - [Scalabilité (Stockage S3/Minio)](#scalabilité-stockage-s3minio)
+
+ - [Expérience utilisateur (UX)](#expérience-utilisateur-ux)
+
+ - [SEO (Search Engine Optimization)](#seo-search-engine-optimization)
+
+ - [Accessibilité (A11Y)](#accessibilité-a11y)
+
+ - [Maintenance et Extensibilité](#maintenance-et-extensibilité)
+
+ - [Tests automatisés](#tests-automatisés)
+
+ - 3.3 [Charte graphique](#33-charte-graphique)
+
+ - [Couleurs](#couleurs)
+
+ - [Police d’écriture](#police-décriture)
+
+ - [Logotype et image de marque](#logotype-et-image-de-marque)
+
+ - 3.4 [Spécifications de l’infrastructure (Docker, PostgreSQL, Redis, Minio)](#34-spécifications-de-linfrastructure-docker-postgresql-redis-minio)
4. [Réalisations](#4-réalisations)
- 4.1 [Organisation des tâches](#41-organisation-des-tâches)
- - [Gestion de projet et suivi des tâches](#gestion-de-projet-et-suivi-des-tâches)
- - [Gestion des versions](#gestion-des-versions-versioning)
- - [Environnement de développement et Monorepo](#environnement-de-développement-et-monorepo)
- - [Pipeline CI/CD](#pipeline-cicd-gitea-actions)
- 4.2 [Backend](#42-backend)
- - [Architecture du backend (NestJS)](#architecture-du-backend-nestjs)
- - [B.1 - Installation et configuration](#b1---installation-et-configuration-de-lenvironnement)
- - [B.2 - Modélisation & Base de données](#b2---modélisation--base-de-données-drizzle-orm-postgresql)
- - [B.3 - Composant d’accès aux données](#b3---composant-daccès-aux-données-drizzle-orm)
- - [B.4 - Composants métier](#b4---composants-métier)
- - [B.5 - Flux métier et CRUD](#b5---flux-métier-et-crud)
- - [B.6 - Qualité et Tests](#b6---qualité-et-tests)
- - [Sécurité & Cryptographie](#sécurité--cryptographie)
- - [Veille technologique et de sécurité](#veille-technologique-et-de-sécurité)
+ - 4.1 [Organisation des tâches](#41-organisation-des-tâches)
- 4.3 [Maquettage](#43-maquettage)
- - [Choix de l'outil](#choix-de-loutil--pourquoi-penpot-)
- - [Workflow de Design](#workflow-de-design)
+ - [Gestion de projet et suivi des tâches](#gestion-de-projet-et-suivi-des-tâches)
- 4.4 [Frontend](#44-frontend)
- - [F.1 - Stack technique](#f1---stack-technique-nextjs-16-react-19-tailwind-css-4)
- - [F.2 - Architecture et Interfaces](#f2---architecture-et-interfaces)
- - [F.3 - Interface dynamique](#f3---interface-dynamique)
+ - [Gestion des versions (Versioning)](#gestion-des-versions-versioning)
- 4.5 [Déploiement et Infrastructure](#45-déploiement-et-infrastructure)
- - [Conteneurisation avec Docker](#conteneurisation-avec-docker-et-docker-compose)
- - [Orchestration des services](#orchestration-des-services-postgresql-redis-minio)
+ - [Environnement de développement et Monorepo](#environnement-de-développement-et-monorepo)
- 4.6 [Écoconception et Accessibilité](#46-écoconception-green-it-et-accessibilité)
- - [Stratégie d'Écoconception](#stratégie-décoconception)
- - [Accessibilité Numérique (RGAA)](#accessibilité-numérique-rgaa)
+ - [Pipeline CI/CD (Gitea Actions)](#pipeline-cicd-gitea-actions)
+
+ - 4.2 [Backend](#42-backend)
+
+ - [Architecture du backend (NestJS)](#architecture-du-backend-nestjs)
+
+ - [Middleware](#middleware)
+
+ - [Guard](#guard)
+
+ - [Data Transfer Object (DTO)](#data-transfer-object-dto)
+
+ - [B.1 - Installation et configuration de l’environnement](#b1---installation-et-configuration-de-lenvironnement)
+
+ - [B.2 - Modélisation & Base de données (Drizzle ORM, PostgreSQL)](#b2---modélisation--base-de-données-drizzle-orm-postgresql)
+
+ - [B.3 - Composant d’accès aux données (Drizzle ORM)](#b3---composant-daccès-aux-données-drizzle-orm)
+
+ - [B.4 - Composants métier](#b4---composants-métier)
+
+ - [B.5 - Flux métier et CRUD](#b5---flux-métier-et-crud)
+
+ - [B.6 - Qualité et Tests](#b6---qualité-et-tests)
+
+ - [Sécurité & Cryptographie](#sécurité--cryptographie)
+
+ - [Veille technologique et de sécurité](#veille-technologique-et-de-sécurité)
+
+ - 4.3 [Maquettage](#43-maquettage)
+
+ - [Choix de l'outil : Pourquoi PenPot ?](#choix-de-loutil--pourquoi-penpot-)
+
+ - [Workflow de Design](#workflow-de-design)
+
+ - 4.4 [Frontend](#44-frontend)
+
+ - [F.1 - Stack technique (Next.js 16, React 19, Tailwind CSS 4)](#f1---stack-technique-nextjs-16-react-19-tailwind-css-4)
+
+ - [F.2 - Architecture et Interfaces](#f2---architecture-et-interfaces)
+
+ - [F.3 - Interface dynamique et UX](#f3---interface-dynamique-et-ux)
+
+ - [F.4 - SEO et Métadonnées avec Next.js](#f4---seo-et-métadonnées-avec-nextjs)
+
+ - [F.5 - Accessibilité et Design Inclusif (A11Y)](#f5---accessibilité-et-design-inclusif-a11y)
+
+ - 4.5 [Déploiement et Infrastructure](#45-déploiement-et-infrastructure)
+
+ - 4.6 [Écoconception (Green IT) et Accessibilité](#46-écoconception-green-it-et-accessibilité)
5. [Respect de la réglementation (RGPD)](#5-respect-de-la-réglementation-rgpd)
- - [Registre des traitements](#registre-des-traitements)
- - [Droits des personnes](#droits-des-personnes)
- - [Sécurité par défaut](#sécurité-par-défaut-privacy-by-design)
+
+ - [Registre des traitements](#registre-des-traitements)
+
+ - [Droits des personnes](#droits-des-personnes)
+
+ - [Sécurité par défaut (Privacy by Design)](#sécurité-par-défaut-privacy-by-design)
6. [Conclusion](#6-conclusion)
- - [Remerciements](#remerciements)
+
+ - [Remerciements](#remerciements)
7. [Annexes](#7-annexes)
- - [Annexe 1 - Schéma de classe](#annexe-1---schéma-de-classe-poo-du-backend)
- - [Annexe 2 - Sources et ressources](#annexe-2---sources-et-ressources)
- - [Annexe 3 - Glossaire technique](#annexe-3---glossaire-technique)
- - [Annexe 4 - Licences et bibliothèques](#annexe-4---licences-et-bibliothèques)
----
+ - [Annexe 1 - Schéma de classe POO du backend](#annexe-1---schéma-de-classe-poo-du-backend)
+
+ - [Annexe 2 - Sources et ressources](#annexe-2---sources-et-ressources)
+
+ - [Annexe 3 - Glossaire technique](#annexe-3---glossaire-technique)
+
+ - [Annexe 4 - Licences et bibliothèques](#annexe-4---licences-et-bibliothèques)
+
+ - [Annexe 5 - Dossier technique (Backend)](#annexe-5---dossier-technique-backend)
+
+ - [Annexe 6 - Dossier technique (Frontend)](#annexe-6---dossier-technique-frontend)
+
+ - [Annexe 7 - Démonstration et accès](#annexe-7---démonstration-et-accès)
# 1. Introduction au projet
@@ -91,7 +146,7 @@ Dans un paysage numérique où la protection des données personnelles et la sé
- **Expérience Utilisateur d'Excellence :** Offrir une plateforme performante et intuitive, capable de gérer des flux de médias importants avec une latence minimale grâce à des stratégies de mise en cache agressives (Redis) et un transcodage optimisé (Sharp, FFmpeg).
- **Sécurité de Haut Niveau :** Garantir l'intégrité et la confidentialité des données des utilisateurs par l'implémentation de protocoles de chiffrement asymétrique (PGP), de cryptographie post-quantique (ML-KEM), de hachage robuste (Argon2id) et de mécanismes d'authentification forte (MFA/TOTP).
- **Conformité Réglementaire Stricte :** Répondre aux exigences du RGPD par une gestion transparente du consentement, le droit à la portabilité des données et l'automatisation du droit à l'oubli (Soft Delete).
-- **Innovation Technologique :** Anticiper les menaces futures en intégrant des standards de cryptographie post-quantique, positionnant le projet à l'avant-garde de la sécurité numérique.
+- **Innovation Technologique et Sécurité Future :** Anticiper les menaces futures en intégrant des standards de cryptographie post-quantique. La transition vers des algorithmes comme **ML-KEM** (Kyber) est devenue une nécessité stratégique pour contrer la menace dite "Store Now, Decrypt Later", où des acteurs malveillants capturent aujourd'hui des flux chiffrés pour les déchiffrer dès l'avènement des ordinateurs quantiques stables. Memegoat se positionne ainsi à l'avant-garde de la protection des données à long terme.
# 2. Liste des compétences couvertes par le projet
@@ -123,7 +178,19 @@ Le système d'authentification de Memegoat repose sur une approche multi-niveaux
Les utilisateurs peuvent téléverser des contenus multimédias de manière sécurisée. Le processus inclut une validation stricte des types MIME et de la taille des fichiers. Chaque contenu peut être enrichi de métadonnées (description, tags). Le partage est facilité par la génération d'URLs uniques et l'intégration de métadonnées **OpenGraph**. L'interface propose des flux par tendances, nouveautés et favoris, optimisés par une mise en cache **Redis**.
### Sécurisation avancée (Cryptographie PGP & Post-Quantique)
-Memegoat implémente une couche de sécurité exceptionnelle. Les données personnelles identifiables (PII) sont chiffrées au repos dans **PostgreSQL** à l'aide de clés **PGP**. De plus, le projet intègre de manière expérimentale le module **ML-KEM (Kyber768)** pour la résistance aux futures menaces quantiques. Un système de "Blind Indexing" permet la recherche sur les données chiffrées sans compromettre leur confidentialité.
+
+Memegoat implémente une couche de sécurité exceptionnelle pour protéger les données les plus sensibles.
+
+#### Pourquoi le Post-Quantique ?
+L'avènement prochain de l'informatique quantique menace les algorithmes de chiffrement asymétrique actuels (RSA, Elliptic Curves) via l'algorithme de Shor. Pour parer à cette menace, Memegoat intègre **ML-KEM (Kyber768)**. Ce choix est crucial pour garantir la confidentialité persistante des données : même si une base de données chiffrée est volée aujourd'hui, elle restera indéchiffrable par un ordinateur quantique futur.
+
+#### Chiffrement des données sensibles (PGP & Argon2id)
+Les données personnelles identifiables (PII), comme les emails, sont chiffrées au repos dans **PostgreSQL** à l'aide de clés **PGP**. Ce mécanisme assure que même un administrateur ayant accès directement aux fichiers de la base de données ne peut lire les informations personnelles sans la clé de déchiffrement.
+
+Pour les mots de passe, nous utilisons **Argon2id**, le vainqueur de la "Password Hashing Competition". Ce choix est justifié par sa résistance supérieure aux attaques par "side-channel" et sa capacité à saturer la mémoire, rendant les attaques via GPU ou ASIC extrêmement coûteuses et inefficaces.
+
+#### Blind Indexing
+Un système de **Blind Indexing** est mis en œuvre pour permettre la recherche sur les données chiffrées (comme l'email lors de la connexion) sans jamais avoir à les déchiffrer en masse. On génère un condensat (hash) sécurisé et distinct de la donnée originale, utilisé uniquement pour les comparaisons d'égalité, préservant ainsi la confidentialité totale de la donnée stockée.
### Panneau d’Administration et Modération
Un tableau de bord dédié permet aux administrateurs de superviser l'activité : gestion des comptes, modération des contenus signalés et suivi des journaux d'audit. Le système de signalement déclenche un flux de modération où les administrateurs peuvent valider, supprimer ou demander une modification du contenu, assurant un environnement sain.
@@ -136,8 +203,19 @@ La découverte de contenus est propulsée par un moteur de recherche multicritè
### Performance & Réactivité (Redis, Caching)
Pour offrir une expérience fluide, Memegoat utilise **Redis** comme couche de cache pour les données hautement sollicitées. Le traitement des médias est optimisé : les images sont converties au format WebP/AVIF via **Sharp**, et les GIFs/vidéos sont transcodés par **FFmpeg**, réduisant le poids des fichiers sans compromettre la qualité.
-### Observabilité et Stabilité (Sentry, Throttler)
-La surveillance de l'application en temps réel est assurée par **Sentry**. L'intégration couvre à la fois le backend (erreurs système, performance des requêtes) et le frontend (erreurs d'interface, Core Web Vitals). L'utilisation du **Profiling Node.js** permet d'identifier précisément les goulots d'étranglement. Pour prévenir les abus et les attaques par déni de service (DoS), un système de limitation de débit (**Rate Limiting**) est implémenté via le module **Throttler**, protégeant ainsi la disponibilité des ressources.
+### Observabilité et Sécurité du Transport (Sentry, Helmet, Throttler)
+
+La surveillance et la protection active de l'application sont assurées par un ensemble d'outils complémentaires :
+- **Sentry** : Assure le suivi des erreurs et la performance. L'intégration couvre à la fois le backend et le frontend, incluant le **Profiling Node.js** pour détecter les fuites de mémoire ou les fonctions bloquantes.
+- **Helmet** : Ce middleware sécurise l'application NestJS en configurant de manière appropriée divers en-têtes HTTP. Ces en-têtes protègent les utilisateurs contre des attaques courantes telles que le XSS, le Clickjacking ou le reniflage de type MIME (MIME-sniffing).
+- **Rate Limiting (Throttler)** : Pour prévenir les abus, les attaques par déni de service (DoS) et les tentatives de brute-force sur l'authentification, un système de limitation de débit est implémenté, restreignant le nombre de requêtes par IP dans une fenêtre de temps donnée.
+
+#### Focus sur les en-têtes Helmet
+L'utilisation de Helmet permet d'injecter automatiquement les protections suivantes :
+- **Content-Security-Policy (CSP)** : Restreint les sources de contenu autorisées (scripts, styles, images), bloquant ainsi l'exécution de scripts malveillants injectés.
+- **X-Frame-Options** : Interdit l'affichage de l'application dans des `` ou `