Files
memegoat/dossier-de-projet-cda.md
Mathis HERRIOT 3347d693ce 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.
2026-01-26 14:19:05 +01:00

228 lines
11 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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