Skip to content

🔵 Cahier des charges #63

@ebouchut

Description

@ebouchut

Cahier des charges

Note

Cette issue contient le cahier des charges.

  • Les Ă©lĂ©ments qui ont Ă©tĂ© entĂ©rinĂ© sont annotĂ©s avec (actĂ©) (authentification, gestion des utilisateurs/rĂ´les, audit).
  • Les Ă©lĂ©ments marquĂ©s (proposĂ©) sont une proposition Ă  valider/affiner.
  • L'Ă©valuation automatique de code est reportĂ©e après la v1.0.

1. Contexte

Learn-dev est une plateforme Web d'apprentissage interactif de la
programmation, fondée sur la pratique et le retour d'information.
C'est mon projet de fin d'étude pour la certification Développeur Web et Web Mobile
(DWWM)
Ă  La Plateforme_.

2. Objectifs

  • Offrir un environnement interactif pour apprendre des concepts de programmation.
  • Permettre une pratique concrète (exercices, leçons).
  • GĂ©rer plusieurs rĂ´les d'utilisateurs (Étudiant, Formateur, Administrateur).
  • DĂ©montrer une maĂ®trise du dĂ©veloppement full-stack aux standards de l'industrie.

3. Périmètre

Dans le périmètre (v1.0)

  • Authentification par session serveur (inscription, connexion, dĂ©connexion).
  • VĂ©rification d'adresse e-mail et rĂ©initialisation de mot de passe par e-mail.
  • Gestion des utilisateurs, des rĂ´les et de leurs associations.
  • Journal d'audit de sĂ©curitĂ©.
  • Socle du domaine pĂ©dagogique (proposĂ©) (Cf. 5.2).

Hors du périmètre / évolutions futures

  • Évaluation automatique de code (exĂ©cution + notation) (reportĂ©e après la v1.0).
  • Microservice d'exĂ©cution de code en bac Ă  sable (runner) (voir ADR-0002).
  • Application mobile / API publique tierce.

4. Acteurs (personas)

Acteur Description Droits principaux
Visiteur Non authentifié Consulter les pages publiques, s'inscrire, se connecter
Étudiant Apprenant inscrit Suivre des cours, réaliser des exercices, suivre sa progression
Formateur Auteur de contenu Créer/éditer des cours, des leçons et des exercices (proposé)
Administrateur Gestion de la plateforme Gérer des utilisateurs et des rôles, consulter l'audit

5. Exigences fonctionnelles

Note

EF est l'abréviation d'une exigence fonctionnelle.

5.1 Authentification et comptes (établi)

  • EF-1 Inscription d'un compte (nom d'utilisateur, e-mail, mot de passe).
  • EF-2 VĂ©rification de l'adresse e-mail via un lien Ă  usage unique et expirant.
  • EF-3 Connexion / dĂ©connexion par session serveur (cookie HttpOnly, Secure, SameSite).
  • EF-4 RĂ©initialisation du mot de passe (mot de passe oubliĂ©) par e-mail (utilisation d'un jeton alĂ©atoire opaque, hachĂ©, Ă  usage unique et expirant, voir issue 🟢 feat(auth) – Password reset flow (forgot password) #51).
  • EF-5 Verrouillage de compte après N Ă©checs de connexion ; suivi des tentatives.
  • EF-6 Gestion du profil utilisateur (consultation, mise Ă  jour).

5.2 Domaine pédagogique (proposé)

  • EF-7 (proposĂ©) Cours : un cours regroupe des leçons ordonnĂ©es.
  • EF-8 (proposĂ©) Leçon : contenu pĂ©dagogique (texte, extraits de code, mĂ©dias).
  • EF-9 (proposĂ©) Exercice : Ă©noncĂ© associĂ© Ă  une leçon.
  • EF-10 (proposĂ©) Inscription d'un Ă©tudiant Ă  un cours (enrollment).
  • EF-11 (proposĂ©) Progression : suivi de l'avancement (leçons/exercices terminĂ©s).
  • EF-12 (proposĂ©) CrĂ©ation de contenu par le formateur (cours, leçons, exercices).
  • EF-13 (futur) Soumission de code et Ă©valuation automatique (reportĂ©e, voir §2).

5.3 Administration & sécurité (établi)

  • EF-14 Gestion des rĂ´les et de leur attribution aux utilisateurs.
  • EF-15 Journalisation d'audit des actions sensibles (connexion, rĂ©initialisation, modifications).
  • EF-16 ContrĂ´le d'accès basĂ© sur les rĂ´les (RBAC) sur l'ensemble des fonctionnalitĂ©s.

6. Exigences non fonctionnelles

Note

ENF est l'abréviation d'une exigence non fonctionnelle.

  • ENF-1 SĂ©curitĂ© : conformitĂ© OWASP ; hachage des mots de passe (bcrypt/argon2) ;
    protection CSRF (intégrée à Spring Security/Thymeleaf) ; validation des entrées ;
    identifiants user_id non énumérables (UUID, voir ADR-0003).
  • ENF-2 ConformitĂ© RGPD : donnĂ©es personnelles minimales, droit Ă  l'effacement,
    consentement, traçabilité (audit).
  • ENF-3 Performance : temps de rĂ©ponse raisonnable des pages (objectif < 500 ms en local).
  • ENF-4 AccessibilitĂ© : viser WCAG 2.1 AA.
  • ENF-5 Internationalisation : interface en français (et anglais en option).
  • ENF-6 MaintenabilitĂ© : tests automatisĂ©s, intĂ©gration continue, migrations versionnĂ©es (Liquibase).
  • ENF-7 PortabilitĂ© : exĂ©cution via conteneurs (Podman/Docker Compose).
  • ENF-8 DisponibilitĂ© & donnĂ©es : sauvegardes de la base, stratĂ©gie de restauration.

7. Contraintes techniques

  • Backend : Java 21, Spring Boot 3.x, Spring Security, Thymeleaf (rendu cĂ´tĂ© serveur).
  • Bases de donnĂ©es : PostgreSQL 17 (cĹ“ur relationnel), MongoDB 8 (le cas Ă©chĂ©ant).
  • Persistance/migrations : Liquibase (changesets SQL formatĂ©s, append-only).
  • Build : Maven ; Conteneurisation : Podman / Docker Compose.
  • Architecture : monorepo ; authentification par session (pas de JWT cĂ´tĂ© web (ADR-0001).
  • Modèle de donnĂ©es : documentĂ© en Merise (MCD/MLD/MPD) et en ERD (Cf. CONTRIBUTING.md).

8. Modèle de données

Le modèle de données est décrit dans CONTRIBUTING.md (sections MCD, MLD, MPD, ERD).
Entités actuelles : users, roles, user_roles (table de jonction),
email_tokens, reset_tokens, audit_logs.
Le domaine pédagogique (proposé) ajoutera des entités telles que courses,
lessons, (exercises, enrollments, progress).

9. Décisions d'architecture (ADR)

Les décisions structurantes sont consignées dans docs/adr/ (format MADR) :

  • ADR-0001 Sessions serveur plutĂ´t que JWT (authentification web).
  • ADR-0002 Authentification inter-services par jeton de service (proposĂ©).
  • ADR-0003 ClĂ© primaire UUID pour users, BIGINT ailleurs.
  • ADR-0004 Mailpit comme collecteur SMTP local.

Cf. #63

10. Livrables

  • Projet:
    • Code source (backend + frontend Thymeleaf) dans le monorepo.
    • SchĂ©ma de base de donnĂ©es versionnĂ© (Liquibase), diagrammes Merise (MCD, MLD, MPD) et ERD.
    • Documentation (README.md, CONTRIBUTING.md, ADR).
    • Tests automatisĂ©s + intĂ©gration continue.
  • Documents:
    • Dossier Professionnel
    • Dossier Projet
    • Diaporama de prĂ©sentation du projet

11. Critères d'acceptation (vue d'ensemble)

  • Un visiteur peut s'inscrire, vĂ©rifier son e-mail, se connecter et se dĂ©connecter.
  • Un utilisateur peut rĂ©initialiser son mot de passe par e-mail (🟢 feat(auth) – Password reset flow (forgot password) #51).
  • Le contrĂ´le d'accès par rĂ´le est appliquĂ© Ă  toutes les fonctionnalitĂ©s sensibles.
  • Les actions sensibles sont journalisĂ©es dans l'audit.
  • (proposĂ©) Un Ă©tudiant peut s'inscrire Ă  un cours et suivre des leçons/exercices.
  • (proposĂ©) Un formateur peut crĂ©er et Ă©diter du contenu pĂ©dagogique.

Metadata

Metadata

Assignees

Labels

Projects

Status
No status

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions