Compte rendu
Mes Voyages est un projet web complet réalisé dans le cadre d'une formation. L'objectif était de concevoir une application de gestion de voyages couvrant l'ensemble du cycle de développement : analyse du besoin, modélisation de la base de données, développement back-end et front-end, tests automatisés et recette.
L'application dispose de deux espaces distincts :
- Espace public : consultation, tri et filtrage des voyages, fiche détail d'un voyage, formulaire de contact.
- Espace administration : création, édition et suppression des voyages (avec upload d'image) et des environnements.
La validation des données est assurée côté serveur par les contraintes Symfony/Validator (note entre 0 et 20, cohérence température min/max, validation des champs du formulaire de contact). Les e-mails sont envoyés via Symfony Mailer avec Messenger comme transport asynchrone. Les tests automatisés couvrent les repositories et les règles de validation métier.
Note. Installation locale : Ce projet n'est pas hébergé en ligne. Pour le tester, il est nécessaire de l'installer localement en suivant les instructions détaillées dans la section. Installation locale ci-dessous.
Langages et technologies utilisés
- Langage back-end : PHP 8.1+
- Framework : Symfony 6.4
- ORM : Doctrine ORM 3 / Doctrine Migrations
- Base de données : MySQL
- Moteur de templates : Twig
- Formulaires : Symfony Form / Validator
- Upload de fichiers : VichUploaderBundle 2.x
- Envoi d'e-mails : Symfony Mailer + Messenger
- Front-end : Symfony Asset Mapper, Stimulus, Turbo (UX)
- Tests : PHPUnit 11, DAMA Doctrine Test Bundle
- Serveur local : Symfony CLI / Apache
- Gestion de dépendances : Composer, npm
- Versioning : Git / GitHub
Présentation du contexte
Ce projet a été développé dans le cadre d'une formation en développement web. Le besoin exprimé était de créer un carnet de voyages numérique personnel, accessible depuis un navigateur, permettant de conserver et de retrouver facilement les souvenirs de voyages passés.
L'application devait être suffisamment complète pour couvrir les notions fondamentales du développement web avec Symfony : modélisation relationnelle, gestion des formulaires, upload de fichiers, envoi d'e-mails, sécurité (tokens CSRF), tests automatisés et déploiement.
Cahier des charges
Fonctionnalités demandées :
- Afficher la liste de tous les voyages enregistrés dans la base de données.
- Permettre de trier la liste par ville, pays, note ou date.
- Permettre de filtrer la liste par ville, pays ou type d'environnement.
- Afficher la fiche détail d'un voyage.
- Permettre, depuis l'espace administration, de créer, modifier et supprimer un voyage (ville, pays, note /20, avis, températures min/max, date, photo, environnements associés).
- Permettre, depuis l'espace administration, de gérer les environnements (mer, montagne, ville, etc.).
- Proposer un formulaire de contact qui envoie un e-mail.
- Valider les données côté serveur (contraintes métier : note entre 0 et 20, température max > température min).
- Gérer l'upload et l'affichage des photos de voyage.
- Écrire des tests automatisés sur les repositories et les validations.
Missions
- Analyse du besoin et modélisation de la base de données (entités
Visite,Environnement, relation Many-to-Manyvisite_environnement). - Mise en place du projet Symfony 6.4 et configuration de l'environnement (
.env, Doctrine, Mailer, Messenger). - Développement des entités Doctrine et génération des migrations.
- Développement des repositories avec méthodes de tri et de filtrage dynamiques.
- Développement des contrôleurs public (
VoyagesController) et administration (AdminVoyagesController,AdminEnvironnementController). - Création des formulaires Symfony (
ContactType, formulaire de voyage avec gestion d'image via Vich). - Création des templates Twig (pages publiques et administration).
- Configuration de VichUploaderBundle pour la gestion des photos.
- Configuration de Symfony Mailer et Messenger pour l'envoi asynchrone d'e-mails.
- Écriture des tests PHPUnit (tests de repository et tests de validation d'entité).
- Configuration du projet pour fonctionner avec un
.htaccessà la racine (docroot flexible).
Installation locale
Le site n'est pas hébergé en ligne. Pour tester l'application, suivez les étapes ci-dessous :
Prérequis : PHP ≥ 8.1, Composer, MySQL, Symfony CLI (recommandé).
# 1. Cloner le dépôt git clone https://github.com/rabarijoy/mesvoyages.git cd mesvoyages # 2. Installer les dépendances PHP composer install # 3. Configurer l'environnement # Copier .env et renseigner DATABASE_URL, MAILER_DSN et APP_SECRET cp .env .env.local # Éditer .env.local avec vos paramètres locaux # 4. Créer la base de données et jouer les migrations php bin/console doctrine:database:create php bin/console doctrine:migrations:migrate # 5. (Optionnel) Charger des données de test php bin/console doctrine:fixtures:load # 6. Lancer le serveur de développement symfony server:start # ou : php -S localhost:8000 -t public
L'application est ensuite accessible à l'adresse https://localhost:8000.