Création d'une application de gestion de voyages
Création d'une application de gestion de voyages pour une agence de voyage fictive dans le cadre d'un projet de groupe en BUT informatique. Le site valorise le patrimoine culturel des ponts de France, en proposant des packages touristiques personnalisés ou prédéfinis à partir de données issues de l'open data.
Langages et technologies utilisés : TypeScript, Astro.js, SQL, YAML, Docker, Gitlab CI/CD
En groupe avec : Lucas Maillet, Kenzo Sechi, Mattéo Banroques-Mathian, Ilyès Drouiche, Lucas Passet, Kenzo Rufflet-Ejiri
Partie 1 : Mise en place d'un cahier des charges
Cette première phase a constitué le socle de notre projet. Elle a permis de définir collectivement la vision, les objectifs, les risques et les besoins fonctionnels de notre application.
Nous avons d'abord réalisé une analyse SWOT et PESTEL pour cerner les enjeux internes et externes. En parallèle, nous avons défini des personas représentatifs de nos cibles : un jeune amateur de sports, un randonneur en famille, et une restauratrice souhaitant valoriser son commerce. Ce travail d'analyse a structuré toute la suite du projet.
De mon côté, j'ai été très impliqué dans la partie risques et contraintes, notamment sur les aspects techniques (RTe1, RTe2) et humains (RH3). J'ai contribué à la rédaction de la matrice de criticité ainsi qu'à la sélection des mesures de mitigation (pair programming, gestion de version, documentation).
Enfin, j'ai participé à l'extraction des données, la rédaction du modèle de données (SLR), au diagramme de cas d'utilisation et à la définition de notre infrastructure ainsi que nos outils. Ces artefacts ont permis de clarifier le périmètre de chaque fonctionnalité.
Partie 2 : Extraction de l'open data
Dans cette deuxième phase, j'ai travaillé activement à l'extraction, la transformation et le chargement des données publiques. Nous avons utilisé Talend pour traiter la base de données « Ponts de France », fournie par CipherBliss El via OpenStreetMap.
Mon rôle a été central dans le filtrage des ponts inutilisables. Par exemple, j'ai configuré le filtre pour supprimer les entrées avec la balise bridge=no
ou les ponts ferroviaires (balise railway
). Ensuite, nous avons trié les doublons sur le nom du pont grâce au composant tUniqRow
.
J'ai également participé à la configuration de tMap
pour transformer les colonnes sources vers notre schéma SQL (nom, coordonnées, type, description). Les données nettoyées ont été envoyées dans la base PostgreSQL, hébergée sur notre VM2.
Ce travail a été crucial : il garantissait la qualité du socle de données utilisé dans l'application. Il m'a aussi permis de mieux comprendre les enjeux de fiabilité et de sécurité dès l'étape d'ingestion.

Figure 1 : Pipeline Talend de nettoyage et chargement des données
Partie 3 : Conception de l'application
Le site utilise Astro.js avec une intégration Vue, Drizzle ORM pour la base PostgreSQL, et TypeScript pour le typage fort. La sécurité a été renforcée via BetterAuth, PIA, et suivi OWASP. L'application est responsive et optimisée UX (tests SUS, personas, feedbacks).

Figure 2 : Diagramme représentant nos outils
Partie 4 : Réalisation de l'application
Le développement s'est appuyé sur GitLab CI/CD et Docker pour l'intégration et le déploiement. Un reverse proxy Apache avec HTTPS sécurise les accès. L'environnement a été conteneurisé et l'administration partagée via Dev Container et VSCode.

Figure 3 : Diagramme représentant notre infrastructure
Liens et fichiers en rapport avec ce projet
- Cahiers des charges et bilan :