docs: add project dossier with detailed specifications and technical overview

- Introduced `dossier-de-projet-cda.md` outlining project scope, objectives, and covered competencies.
- Included functional and non-functional specifications, technical stack, and infrastructure details.
- Added sections on backend architecture, frontend implementation, security measures, and deployments.
This commit is contained in:
Mathis HERRIOT
2026-01-26 14:19:05 +01:00
parent 5048b4813c
commit 3347d693ce

228
dossier-de-projet-cda.md Normal file
View File

@@ -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 dAdministration 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 linfrastructure](#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 lenvironnement](#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 daccè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 dAdministration 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 linfrastructure (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 lenvironnement
### 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 daccè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