# Sommaire 1. [Introduction au projet](#1-introduction-au-projet) 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 (MFA, Sessions)](#gestion-des-utilisateurs-et-authentification-mfa-sessions) - [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) - [Sécurité Applicative (Helmet, Clamscan, Sentry)](#sécurité-applicative-helmet-clamscan-sentry) - [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](#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) 4.2 [Backend](#42-backend) - [Architecture du backend (NestJS)](#architecture-du-backend-nestjs) - [Controller](#controller) - [Service](#service) - [Module](#module) - [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) - [Table Users](#table-users) - [Table Contents (Memes & GIFs)](#table-contents-memes--gifs) - [Table Categories & Tags](#table-categories--tags) - [Table Favorites](#table-favorites) - [Table Audit Logs & Reports](#table-audit-logs--reports) - [Table Sessions & API Keys](#table-sessions--api-keys) - [Table RBAC (Rôles & Permissions)](#table-rbac-rôles--permissions) - [Table PGP (Chiffrement symétrique)](#table-pgp-chiffrement-symétrique) - [Migration & Seeding](#migration--seeding) - [B.3 - Composant d’accès aux données (Drizzle ORM)](#b3---composant-daccès-aux-données-drizzle-orm) - [Utilisation de Drizzle dans un Service Métier](#utilisation-de-drizzle-dans-un-service-métier) - [Sécurité et Prévention des Injections SQL](#sécurité-et-prévention-des-injections-sql) - [Gestion des Erreurs et Optimisation des Requêtes](#gestion-des-erreurs-et-optimisation-des-requêtes) - [B.4 - Composants métier](#b4---composants-métier) - [Gestion des médias (S3/Minio, Sharp, FFmpeg)](#gestion-des-médias-s3minio-sharp-ffmpeg) - [Cycle de vie d'un contenu (Upload, Validation, Modération)](#cycle-de-vie-dun-contenu-upload-validation-modération) - [Règles Métier et Avantages de Drizzle ORM](#règles-métier-et-avantages-de-drizzle-orm) - [B.5 - Qualité et Tests](#b5---qualité-et-tests) - [Tests unitaires (Jest)](#tests-unitaires-jest) - [Assurance de Qualité et Détection Précoce des Bugs](#assurance-de-qualité-et-détection-précoce-des-bugs) - [Maintenabilité du Code et Documentation](#maintenabilité-du-code-et-documentation) - [Sécurité & Cryptographie](#sécurité--cryptographie) - [JWT (JSON Web Token) & Sessions sécurisées](#jwt-json-web-token--sessions-sécurisées) - [Hashing avec Argon2id](#hashing-avec-argon2id) - [Data Transfer Object (DTO) & Validation (Zod/Class-validator)](#data-transfer-object-dto--validation-zodclass-validator) - [Bibliothèque Helmet](#bibliothèque-helmet) - [Content Security Policy (CSP)](#content-security-policy-csp) - [X-Frame-Options](#x-frame-options) - [Strict-Transport-Security (HSTS)](#strict-transport-security-hsts) - [Referrer-Policy](#referrer-policy) - [Permitted-Cross-Domain-Policies](#permitted-cross-domain-policies) - [COEP, COOP & CORP](#coep-coop--corp) - [CORS (Cross-Origin Resource Sharing)](#cors-cross-origin-resource-sharing) - [SSL/TLS et Chiffrement des flux](#ssltls-et-chiffrement-des-flux) - [Cryptographie Post-Quantique (Module ML-KEM / Kyber768)](#cryptographie-post-quantique-module-ml-kem--kyber768) - [Chiffrement des données au repos (PGP/pgcrypto)](#chiffrement-des-données-au-repos-pgppgcrypto) - [Antivirus applicatif (Intégration Clamscan)](#antivirus-applicatif-intégration-clamscan) - [Veille technologique et de sécurité](#veille-technologique-et-de-sécurité) - [OWASP Top Ten : Priorité à la sécurité applicative](#owasp-top-ten--priorité-à-la-sécurité-applicative) - [Veille sur la sécurité Post-Quantique](#veille-sur-la-sécurité-post-quantique) - [CERT-FR (Veille gouvernementale)](#cert-fr-veille-gouvernementale) 4.3 [Maquettage](#43-maquettage) 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) - [Approche mobile-first](#approche-mobile-first) - [Composants UI (Radix UI, Shadcn UI)](#composants-ui-radix-ui-shadcn-ui) - [F.3 - Interface dynamique](#f3---interface-dynamique) - [Explorateur de contenus (Grilles, Filtres)](#explorateur-de-contenus-grilles-filtres) - [Gestion du profil et des favoris](#gestion-du-profil-et-des-favoris) - [Upload de fichiers et prévisualisation interactive](#upload-de-fichiers-et-prévisualisation-interactive) - [SEO & Accessibilité](#seo--accessibilité) - [Veille technologique frontend (React 19 & Next.js App Router)](#veille-technologique-frontend-react-19--nextjs-app-router) 4.5 [Déploiement et Infrastructure](#45-déploiement-et-infrastructure) - [Conteneurisation avec Docker et Docker Compose](#conteneurisation-avec-docker-et-docker-compose) - [Orchestration des services (PostgreSQL, Redis, Minio)](#orchestration-des-services-postgresql-redis-minio) 5. [Conclusion](#5-conclusion) - [Remerciements](#remerciements) 6. [Annexes](#6-annexes) - [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) --- # 1. Introduction au projet # 2. Liste des compétences couvertes par le projet # 3. Cahier des charges ## 3.1 Spécifications fonctionnelles ### Gestion des utilisateurs et authentification (MFA, Sessions) ### Gestion et partage de contenus (Memes & GIFs) ### Sécurisation avancée (Cryptographie PGP & Post-Quantique) ### Panneau d’Administration et Modération ### Système de recherche par catégories et tags ## 3.2 Spécifications non fonctionnelles ### Performance & Réactivité (Redis, Caching) ### Sécurité Applicative (Helmet, Clamscan, Sentry) ### Scalabilité (Stockage S3/Minio) ### Expérience utilisateur (UX) ### SEO (Search Engine Optimization) ### Accessibilité (A11Y) ### Maintenance et Extensibilité ### Tests automatisés ## 3.3 Charte graphique ### Couleurs ### Police d’écriture ### Logotype et image de marque ## 3.4 Spécifications de l’infrastructure (Docker, PostgreSQL, Redis, Minio) # 4. Réalisations ## 4.1 Organisation des tâches ## 4.2 Backend ### Architecture du backend (NestJS) #### Controller #### Service #### Module #### Middleware #### Guard #### Data Transfer Object (DTO) ### B.1 - Installation et configuration de l’environnement ### B.2 - Modélisation & Base de données (Drizzle ORM, PostgreSQL) #### Table Users #### Table Contents (Memes & GIFs) #### Table Categories & Tags #### Table Favorites #### Table Audit Logs & Reports #### Table Sessions & API Keys #### Table RBAC (Rôles & Permissions) #### Table PGP (Chiffrement symétrique) #### Migration & Seeding ### B.3 - Composant d’accès aux données (Drizzle ORM) #### Utilisation de Drizzle dans un Service Métier #### Sécurité et Prévention des Injections SQL #### Gestion des Erreurs et Optimisation des Requêtes ### B.4 - Composants métier #### Gestion des médias (S3/Minio, Sharp, FFmpeg) #### Cycle de vie d'un contenu (Upload, Validation, Modération) #### Règles Métier et Avantages de Drizzle ORM ### B.5 - Qualité et Tests #### Tests unitaires (Jest) #### Assurance de Qualité et Détection Précoce des Bugs #### Maintenabilité du Code et Documentation ### Sécurité & Cryptographie #### JWT (JSON Web Token) & Sessions sécurisées #### Hashing avec Argon2id #### Data Transfer Object (DTO) & Validation (Zod/Class-validator) #### Bibliothèque Helmet #### Content Security Policy (CSP) #### X-Frame-Options #### Strict-Transport-Security (HSTS) #### Referrer-Policy #### Permitted-Cross-Domain-Policies #### COEP, COOP & CORP #### CORS (Cross-Origin Resource Sharing) #### SSL/TLS et Chiffrement des flux #### Cryptographie Post-Quantique (Module ML-KEM / Kyber768) #### Chiffrement des données au repos (PGP/pgcrypto) #### Antivirus applicatif (Intégration Clamscan) ### Veille technologique et de sécurité #### OWASP Top Ten : Priorité à la sécurité applicative #### Veille sur la sécurité Post-Quantique #### CERT-FR (Veille gouvernementale) ## 4.3 Maquettage ## 4.4 Frontend ### F.1 - Stack technique (Next.js 16, React 19, Tailwind CSS 4) ### F.2 - Architecture et Interfaces #### Approche mobile-first #### Composants UI (Radix UI, Shadcn UI) ### F.3 - Interface dynamique #### Explorateur de contenus (Grilles, Filtres) #### Gestion du profil et des favoris #### Upload de fichiers et prévisualisation interactive #### SEO & Accessibilité #### Veille technologique frontend (React 19 & Next.js App Router) ## 4.5 Déploiement et Infrastructure ### Conteneurisation avec Docker et Docker Compose ### Orchestration des services (PostgreSQL, Redis, Minio) # 5. Conclusion ### Remerciements # 6. Annexes ### Annexe 1 - Schéma de classe POO du backend ### Annexe 2 - Sources et ressources ### Annexe 3 - Glossaire technique ### Annexe 4 - Licences et bibliothèques