Projet - Trip Planner
- à rendre avant le 26/03 à 23h59
- soutenance le 30/03
Présentation
Section titled “Présentation”L’objectif est de développer une application web permettant à un utilisateur de:
- créer et organiser des voyages
- ajouter des destinations, activités, hébergements et transports
- afficher et maintenir un coût total calculé dynamiquement
Le projet est à réaliser en groupe.
Conseils
Section titled “Conseils”- Lisez bien le sujet.
- Utilisez Trello (ou équivalent) pour lister les tâches et vous répartir le travail.
- Terminez bien le TP (Trip Planner), puis ajoutez des fonctionnalités supplémentaires.
- Testez l’installation sur Linux en suivant votre README.
- Entraide autorisée, mais pas de copie de code. Si vous utilisez du code externe, citez vos sources.
Consignes (base attendue)
Section titled “Consignes (base attendue)”TP2 complété
Section titled “TP2 complété”- Vous devez avoir complété le TP guidé Trip Planner:
- Avec SQLite, pas de MySQL
- Avec du code commenté (controllers, modèles, migrations, etc.)
Github
Section titled “Github”- Faites des commits pendant le développement.
- Des commits clairs, correspondant à une progression réelle, seront appréciés.
- Un seul commit final le dernier jour sera pénalisé.
README.md obligatoire
Section titled “README.md obligatoire”Le fichier README.md (à la racine du dépôt) fera office de rapport.
Il doit contenir:
- le guide d’installation (toutes les commandes)
- les fichiers à configurer (ex:
.env) - les fonctionnalités implémentées
- pour chaque fonctionnalité: comment je la teste (URLs, boutons, identifiants si besoin)
- Soignez la mise en forme et l’orthographe (Passez votre fichier dans un correcteur orthographique)
Important: je dois pouvoir cloner votre repo et suivre votre README pour lancer votre projet.
-
Le repository git (Github Classroom) est votre rendu.
-
le nom de votre «team» est bien constitué des noms des différents membres de votre groupe.
-
Le dernier commit doit dater d’avant le
26/03 à 23h59. -
Travail en groupe (3 ou 4 personnes). Sauf exception validée avec moi, des points seront retirés si vous n’êtes pas en groupe.
Soutenance
Section titled “Soutenance”- démo rapide (moins de 5 minutes)
- Pas de slide nécessaire.
- questions individuelles: vous devez expliquer une fonctionnalité en naviguant dans votre code
Évaluation
Section titled “Évaluation”La note finale sera donnée en fonction:
- des fonctionnalités supplémentaires
- de la qualité de votre code
- de votre compte rendu
- de votre soutenance
Sujet du projet: Trip Planner (fonctionnalités attendues)
Section titled “Sujet du projet: Trip Planner (fonctionnalités attendues)”Fonctionnalités minimales (MVP)
Section titled “Fonctionnalités minimales (MVP)”Vous devez implémenter au minimum:
1) Gestion des voyages
Section titled “1) Gestion des voyages”- CRUD voyages (title, description, dates, nombre de personnes)
- Un voyage appartient à un utilisateur
- Un utilisateur ne voit que ses voyages (si auth mise en place) ou au minimum
user_idet filtrage
2) Ajout d’éléments à un voyage
Section titled “2) Ajout d’éléments à un voyage”Votre voyage doit pouvoir contenir:
- des destinations
- des activités (rattachées à une destination)
- des hébergements (rattachés à une destination)
- des transports (rattachés au voyage)
3) Calcul du coût total (dynamique)
Section titled “3) Calcul du coût total (dynamique)”Le coût total doit être calculé dynamiquement (pas stocké en base sans justification) et dépendre:
- du nombre de personnes
- des activités
- des hébergements
- des transports
Règles MVP proposées:
- activités:
price_per_person * people_count - hébergements:
price_per_night * nights - transports:
- per_person:
price * people_count - fixed:
price
- per_person:
Le total doit s’afficher sur la page détail d’un voyage.
4) Validation
Section titled “4) Validation”- Utiliser des
FormRequestpour valider les formulaires importants. - Exemples de validations attendues:
- dates cohérentes (
starts_at<=ends_at) - nights >= 1
people_count>= 1
- dates cohérentes (
5) Base de données, migrations, seeders
Section titled “5) Base de données, migrations, seeders”- Migrations propres, clés étrangères
- Factories + seeders obligatoires
Commande attendue:
php artisan migrate:fresh --seeddoit produire une base avec des données permettant de tester l’application.
Fonctionnalités supplémentaires (au choix)
Section titled “Fonctionnalités supplémentaires (au choix)”Voici des idées (choisissez en quelques unes, bien finies):
Authentification / Autorisation
Section titled “Authentification / Autorisation”- Voir authentication et starter kits
- Protéger l’accès aux voyages
- Policies: un utilisateur ne peut modifier que ses voyages
- Inviter des utilisateurs à collaborer sur un voyage
- Rôles (admin, user) avec permissions différentes
Recherche / filtres
Section titled “Recherche / filtres”- Recherche sur la liste des voyages
- Filtre par date, destination, budget
Contraintes métier avancées
Section titled “Contraintes métier avancées”- Une activité ne peut pas être planifiée en dehors des dates du voyage
people_countne doit pas dépasser la capacité d’un hébergement- Un voyage doit contenir au moins une destination
Améliorations UI / UX
Section titled “Améliorations UI / UX”- Interface plus soignée (Tailwind / Bootstrap)
- Tableau de bord récapitulatif
Médias
Section titled “Médias”- Upload d’une image de couverture pour un voyage ou une destination
Notes / commentaires
Section titled “Notes / commentaires”- Noter un voyage
- Ajouter des commentaires (et éventuellement modération admin)
- Ajout d’un captcha
- Testing
- Tests Feature / Unit
- Bonus: Dusk (browser tests)
Librairies de destinations / activités / transports
Section titled “Librairies de destinations / activités / transports”- Intégration d’une API externe (ex: Google Places) pour suggérer des destinations ou activités
- Librairie de transports avec calcul d’itinéraire (ex: Google Maps)
- Librairie d’hébergements (ex: Booking.com)
- Librairie interne de destinations / activités / transports à choisir lors de la création d’un voyage (avec possibilité d’ajouter des éléments à la librairie pour l’admin?)
Aide à la planification par IA
Section titled “Aide à la planification par IA”- Génération de suggestions de voyages, destinations ou activités à partir d’une description textuelle (ex: « Je veux un voyage de 10 jours en Italie avec des activités culturelles et gastronomiques »)
- Utilisation d’une API d’IA (ex: OpenAI, Mistral) pour générer ces suggestions. Eventuellement intégrer ces suggestions dans la création d’un voyage (ex: bouton « Générer un voyage » qui pré-remplit les champs du formulaire de création d’un voyage avec les suggestions de l’IA).
- Possibilité d’ajout d’un token par l’utilisateur pour éviter d’utiliser votre token personnel.
Surprise
Section titled “Surprise”- Toute fonctionnalité cohérente et bien réalisée
- Soyez créatifs, mais assurez-vous que votre fonctionnalité supplémentaire est bien finie et fonctionne correctement. Il vaut mieux une fonctionnalité simple et fonctionnelle qu’une fonctionnalité complexe qui ne fonctionne pas ou est incomplète.
- À vos risques et périls, mais si vous faites quelque chose de puissant, ça peut payer.
- N’oubliez pas de bien le préciser dans vos comptes rendus et de me donner des détails.
- Dans le doute, vous pouvez me soumettre vos idées avant de commencer.