diff --git a/dossier-de-projet-cda.md b/dossier-de-projet-cda.md new file mode 100644 index 0000000..fd1ef9f --- /dev/null +++ b/dossier-de-projet-cda.md @@ -0,0 +1,228 @@ +# 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 \ No newline at end of file