Projet Final : Meme Battle Arena
Projet Final : Meme Battle Arena
Objectif du projet
Créer une application web de concours de mèmes avec Laravel (Blade + Breeze). Les utilisateurs organisent des battles (concours), y soumettent des mèmes (image uniquement, sans légende) et votent. L’objectif est de démontrer votre maîtrise des bases Laravel (routes, vues Blade, Eloquent, auth Breeze, upload de fichiers) et une gestion rigoureuse des autorisations (Gates/Policies).
Cahier des charges (fonctionnel)
-
Authentification : inscription/connexion via Laravel Breeze.
-
Battles (concours)
-
Créer, voir la liste, consulter le détail.
-
Un concours possède un titre, une description, une date limite.
-
Passée la date limite, plus aucune soumission n’est acceptée.
-
Classement visible des mèmes d’une battle (critère de score cohérent et stable).
-
-
Mèmes (images uniquement)
-
Soumission d’un fichier image à une battle ouverte.
-
Consultation d’un mème individuellement.
-
Pas de légende : l’image fait foi.
-
-
Votes
-
Un utilisateur connecté peut voter une seule fois par mème.
-
Le score d’un mème est calculé à partir des votes (somme/moyenne, à vous de définir clairement).
-
-
Recherche & filtres
-
Recherche de battles par titre.
-
Filtre par statut : ouvert (deadline ≥ maintenant) / clos (deadline < maintenant).
-
-
Qualité de vie
-
Pagination sur les listes et messages de succès/erreur (flash).
-
Gestion propre des erreurs d’upload et affichage lisible dans l’UI.
-
Exigences techniques (cadre)
-
Stack : Laravel (Blade, Breeze), PHP 8.2+, base de données au choix (ex. SQLite, MySQL, …).
-
Upload d’images : stockage public et affichage dans l’interface.
-
Sécurité
-
CSRF activé, sortie échappée dans Blade.
-
Autorisations obligatoires via Gates/Policies :
-
Seul l’auteur de la battle peut la modifier/supprimer.
-
Seul l’auteur d’un mème peut le modifier/supprimer.
-
Aucune soumission ni vote sur une battle close.
-
Un utilisateur ne peut pas voter deux fois le même mème.
-
-
Rapport (PDF)
Inclure un rapport professionnel et clair :
-
Introduction : présentation succincte du projet.
-
Cahier des charges réalisé : ce qui est effectivement livré.
-
Diagramme de classes UML : inclure au minimum les entités et multiplicités pertinentes pour votre solution.
-
Fonctionnalités clés : captures d’écran commentées.
-
Difficultés rencontrées & solutions.
-
Autocritique : points forts, points à améliorer.
-
Suggestions d’améliorations (pour l’avenir, hors portée de l’examen).
-
Contribution de ChatGPT : préciser l’usage (rédaction, relecture, organisation, etc.).
NB : Ne détaillez pas MVC dans le rapport (déjà vu en cours).
Modalités de remise
-
À remettre sur le groupe Teams du cours (devoir dédié) :
-
Lien GitHub du projet (historique git significatif).
-
Rapport PDF.
-
-
Échéance : mardi 7 octobre 2025 à minuit.
-
Travail individuel.
-
ChatGPT autorisé pour la rédaction du rapport, déconseillé pour générer le code.
Rappel sévère mais juste : les autorisations sont le premier endroit où on se crashe quand on code trop vite. Verrouillez vos Gates/Policies comme si votre moyenne dépendait de chaque bouton “Supprimer”. Parce que… c’est le cas. 🧨😈
