Mathias STRASSER c5e6c1d810 feat: Activation de compte utilisateur avec validation token
L'inscription Classeo se fait via invitation : un admin crée un compte,
l'utilisateur reçoit un lien d'activation par email pour définir son
mot de passe. Ce flow sécurisé évite les inscriptions non autorisées
et garantit que seuls les utilisateurs légitimes accèdent au système.

Points clés de l'implémentation :
- Tokens d'activation à usage unique stockés en cache (Redis/filesystem)
- Validation du consentement parental pour les mineurs < 15 ans (RGPD)
- L'échec d'activation ne consume pas le token (retry possible)
- Users dans un cache séparé sans TTL (pas d'expiration)
- Hot reload en dev (FrankenPHP sans mode worker)

Story: 1.3 - Inscription et activation de compte
2026-01-31 19:34:03 +01:00
2026-01-22 10:48:30 +00:00

Classeo

Application de gestion scolaire moderne - Backend Symfony 8 + Frontend SvelteKit 2.

Quick Start

Prerequis

  • Docker Desktop 24+ avec Docker Compose 2.20+
  • Git

Configuration /etc/hosts (multi-tenant)

Classeo utilise une architecture multi-tenant basée sur les sous-domaines. Ajoutez cette ligne à /etc/hosts :

sudo sh -c 'echo "127.0.0.1 classeo.local ecole-alpha.classeo.local ecole-beta.classeo.local" >> /etc/hosts'

Lancement

# Cloner le repo
git clone https://github.com/ClasseoEdu/classeo.git
cd classeo

# Lancer tous les services
docker compose up -d

# Verifier le statut
docker compose ps

# Verifier que les tenants répondent
make check-tenants

URLs

Multi-tenant (recommandé)

Service URL Description
Frontend Alpha http://ecole-alpha.classeo.local:5174 Tenant ecole-alpha
Frontend Beta http://ecole-beta.classeo.local:5174 Tenant ecole-beta
API Alpha http://ecole-alpha.classeo.local:18000/api API tenant ecole-alpha
API Beta http://ecole-beta.classeo.local:18000/api API tenant ecole-beta
API Docs http://ecole-alpha.classeo.local:18000/api/docs Documentation OpenAPI

Services partagés

Service URL Description
RabbitMQ http://localhost:15672 Admin (guest/guest)
Meilisearch http://localhost:7700 Dashboard recherche
Mailpit http://localhost:8025 Emails de test
Mercure http://localhost:3000/.well-known/mercure SSE Hub

Stack Technique

Backend

  • PHP 8.5 avec property hooks et asymmetric visibility
  • Symfony 8.0 - Framework DDD-friendly
  • API Platform 4.x - API REST auto-generee
  • Doctrine ORM 3.x - Persistence avec mappings separes
  • PHPStan level 9 - Analyse statique stricte

Frontend

  • SvelteKit 2.x - SSR, routing, PWA
  • Svelte 5 - Runes ($state, $derived, $effect)
  • TypeScript strict - Typage fort
  • TanStack Query 5 - Server state management
  • Tailwind CSS 3 - Utility-first CSS

Infrastructure

  • PostgreSQL 18.1 - Base de donnees
  • Redis 7.4 - Cache + Sessions
  • RabbitMQ 4.2 - Message queue
  • Mercure - Real-time SSE
  • Meilisearch 1.12 - Full-text search
  • Mailpit - Email testing

Architecture

Bounded Contexts

backend/src/
├── Administration/  # Gestion etablissement, utilisateurs
├── Scolarite/       # Notes, classes, emploi du temps
├── VieScolaire/     # Absences, retards, sanctions
├── Communication/   # Messages, notifications
└── Shared/          # Kernel partage (EntityId, DomainEvent, etc.)

Structure DDD

Chaque Bounded Context suit la meme structure :

{BC}/
├── Domain/           # Pure PHP - ZERO dependance framework
│   ├── Model/        # Aggregates, Entities, Value Objects
│   ├── Event/        # Domain Events
│   ├── Repository/   # Interfaces repository
│   └── Service/      # Domain Services
├── Application/      # Use cases
│   ├── Command/      # Write operations
│   ├── Query/        # Read operations
│   └── EventHandler/ # Domain event handlers
└── Infrastructure/   # Implementations framework
    ├── Persistence/  # Doctrine repositories
    ├── Api/          # API Platform resources
    └── Messaging/    # RabbitMQ handlers

Developpement

Commandes utiles

# Backend
docker compose exec php composer phpstan      # Analyse statique
docker compose exec php composer test         # Tests PHPUnit
docker compose exec php composer cs-fix       # Correction code style

# Frontend
docker compose exec frontend pnpm run lint    # ESLint
docker compose exec frontend pnpm run check   # TypeScript check
docker compose exec frontend pnpm run test    # Vitest
docker compose exec frontend pnpm run test:e2e # Playwright

Makefile (raccourcis)

make up       # docker compose up -d
make down     # docker compose down
make logs     # docker compose logs -f
make test     # Run all tests
make lint     # Run all linters

Tests

  • PHPUnit - Tests unitaires et integration backend
  • Vitest - Tests unitaires frontend
  • Playwright - Tests E2E

Documentation

Licence

Proprietary - ClasseoEdu

Description
No description provided
Readme MIT 9.8 MiB
Languages
PHP 64.7%
Svelte 14.5%
TypeScript 14.4%
Python 5.1%
Shell 0.5%
Other 0.7%