Plateforme de cours en ligne
Projet intégrateur · Symfony · Vue.js · Node.js · RGPD
EventFlow est une application web de gestion d'événements professionnels (conférences, meetups, formations). Les organisateurs créent et publient des événements ; les participants s'inscrivent. Le tout repose sur une architecture moderne — API Symfony + SPA Vue.js — avec une conformité RGPD native et complète.
/backend (Symfony — API REST JSON) + dossier /frontend (Vue.js — SPA). Communication exclusivement via l'API. Un seul repo Git avec les deux projets.
Les 4 entités Doctrine à implémenter. Les champs marqués RGPD sont soumis à des règles de traitement spécifiques.
| Endpoint | Méthode | Auth | Description |
|---|---|---|---|
POST /api/auth/register | POST | Public | Inscription + enregistrement consentement |
POST /api/auth/login | POST | Public | Authentification → retourne JWT |
GET /api/events | GET | Public | Liste des événements publiés |
GET /api/events/{id} | GET | Public | Détail d'un événement |
POST /api/events | POST | ORGANIZER | Créer un événement |
PUT /api/events/{id} | PUT | ORGANIZER (own) | Modifier un événement |
DELETE /api/events/{id} | DELETE | ORGANIZER (own) | Supprimer un événement |
POST /api/events/{id}/register | POST | USER | S'inscrire à un événement |
DELETE /api/registrations/{id} | DELETE | USER (own) | Annuler son inscription |
GET /api/me | GET | USER | Données personnelles (RGPD) |
PUT /api/me | PUT | USER | Rectification des données |
DELETE /api/me | DELETE | USER | Anonymisation du compte |
POST /api/consent | POST | USER | Mise à jour du consentement |
php bin/console app:anonymize-old-users — Anonymise les comptes inactifs depuis plus de 2 ans (prénom → "Utilisateur supprimé", email → hash SHA256, téléphone → null, isAnonymized = true). À planifier via un cron en production.
| Route Vue Router | Composant | Accès |
|---|---|---|
/ | HomeView | Public |
/events | EventListView | Public |
/events/:id | EventDetailView | Public |
/login | LoginView | Public |
/register | RegisterView | Public |
/dashboard | DashboardView | USER / ORGANIZER |
/events/create | EventFormView | ORGANIZER |
/events/:id/edit | EventFormView | ORGANIZER (own) |
/profile | ProfileView | USER (RGPD) |
/privacy | PrivacyView | Public |
| Exigence RGPD | Implémentation attendue | Où ? |
|---|---|---|
| Consentement explicite | Checkbox non pré-cochée à l'inscription + version de la politique enregistrée | Backend + Frontend |
| Bandeau cookies | 3 catégories : nécessaires (imposés), analytiques, marketing — choix enregistré dans localStorage | Vue.js (composant global) |
| Droit d'accès | Page "/profile" affichant toutes les données personnelles stockées | Frontend (appel GET /api/me) |
| Droit de rectification | Formulaire de modification des données personnelles | Frontend (appel PUT /api/me) |
| Droit à l'effacement | Anonymisation (pas suppression) — données remplacées, ConsentLog conservé | Backend (DELETE /api/me) |
| Minimisation | Téléphone optionnel — ne collecter que les données nécessaires | Entité User (nullable) |
| Durée de conservation | Anonymisation auto après 2 ans d'inactivité | Commande Symfony |
| Logs d'accès | Chaque accès/modification/suppression de données personnelles est tracé | Listener Symfony (Event) |
| IP pseudonymisée | IP hashée (SHA-256) avant stockage dans ConsentLog | Backend |
| Politique de confidentialité | Page dédiée accessible sans authentification | Vue.js (PrivacyView) |
Chaque jour est organisé en demi-journées. La répartition des tâches entre les deux membres du binôme est libre — mais le Git doit montrer des contributions équilibrées.
/backend (Symfony) et /frontend (Vue.js). Historique de commits propre, branches feature si possible. Les deux membres doivent apparaître dans les commits.
.env.example), commandes d'installation et de lancement pas à pas, architecture du projet expliquée en quelques lignes.
docker-compose up qui lance toutLes questions sont posées individuellement à chaque membre du binôme. Chacun doit être capable de défendre l'ensemble du projet.
ref() et reactive() en Vue 3 ?| Contrainte | Exigence |
|---|---|
| Versionnage | Git obligatoire, repo partagé, commits réguliers avec messages descriptifs |
| Sécurité | Mots de passe hashés (bcrypt), JWT signé, pas de données sensibles en clair dans le code |
| Variables d'env. | Fichier .env.example fourni, jamais de .env commité |
| Base de données | MySQL 8+ ou PostgreSQL 14+ avec migrations Doctrine versionnées |
| Versions | PHP 8.2+, Symfony 6.4+, Vue.js 3.x, Node.js 20 LTS |
| Communication | Le frontend ne doit jamais accéder directement à la BDD — tout passe par l'API |
| Vue.js / Node | SPA, Composition API, Pinia, Vue Router, guards, Vite, composants réutilisables |
| Symfony | API REST, Doctrine ORM, JWT, Validator, Services, Events, commandes console |
| RGPD | Consentement, droits utilisateurs, anonymisation, registre des traitements, Privacy by Design |
Bon projet à tous les binômes ! La qualité du code prime sur la quantité des fonctionnalités.