Skip to content

Projet - Trip Planner

  • à rendre avant le 26/03 à 23h59
  • soutenance le 30/03

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.

  • 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.
  • Vous devez avoir complété le TP guidé Trip Planner:
  • Avec SQLite, pas de MySQL
  • Avec du code commenté (controllers, modèles, migrations, etc.)
  • 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é.

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.

  • démo rapide (moins de 5 minutes)
  • Pas de slide nécessaire.
  • questions individuelles: vous devez expliquer une fonctionnalité en naviguant dans votre code

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)”

Vous devez implémenter au minimum:

  • 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_id et filtrage

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)

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

Le total doit s’afficher sur la page détail d’un voyage.

  • Utiliser des FormRequest pour valider les formulaires importants.
  • Exemples de validations attendues:
    • dates cohérentes (starts_at <= ends_at)
    • nights >= 1
    • people_count >= 1
  • Migrations propres, clés étrangères
  • Factories + seeders obligatoires

Commande attendue:

Terminal window
php artisan migrate:fresh --seed

doit 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):

  • 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 sur la liste des voyages
  • Filtre par date, destination, budget
  • Une activité ne peut pas être planifiée en dehors des dates du voyage
  • people_count ne doit pas dépasser la capacité d’un hébergement
  • Un voyage doit contenir au moins une destination
  • Interface plus soignée (Tailwind / Bootstrap)
  • Tableau de bord récapitulatif
  • Upload d’une image de couverture pour un voyage ou une destination
  • 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?)
  • 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.
  • 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.