Mathias STRASSER 6889c67a44 fix(ci): Corriger les tests E2E en CI
Plusieurs problèmes empêchaient les tests E2E de passer en CI :

1. Healthcheck : L'endpoint /api nécessite une authentification et
   retournait 401, causant l'échec du healthcheck. Remplacé par
   /api/docs qui est public.

2. Mailer : L'activation de compte déclenche l'envoi d'un email via
   mailpit, qui n'est pas disponible en CI. Ajout d'une variable
   d'environnement MAILER_DSN=null://null pour désactiver l'envoi.

3. Token partagé : Chaque navigateur (chromium, firefox, webkit)
   consommait le même token, causant des échecs pour les suivants.
   Maintenant chaque navigateur crée son propre token dans beforeAll
   avec un email unique (e2e-{browser}@example.com).

4. Nettoyage : Suppression de test-utils.ts et global-setup simplifié
   car la création de token est maintenant dans le fichier de test.
2026-01-31 21:14:06 +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%