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:
228
dossier-de-projet-cda.md
Normal file
228
dossier-de-projet-cda.md
Normal 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 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
|
||||
Reference in New Issue
Block a user