logo Lucie Freihaut
Projet Universitaire • Juin 2025

Clairtemps

Dans le cadre de ce projet universitaire, nous avons développé une application web de prévisions météorologiques affichant des données en temps réel, par heure et sur 15 jours, à partir de l'API OpenWeatherMap. L'application repose sur une architecture backend en Symfony et un frontend en Vue.js, avec une attention particulière portée à l'UI, à l'UX et à l'optimisation des performances. L'objectif était de concevoir une interface claire, moderne et agréable à utiliser, dans des conditions proches d'un projet professionnel.

15J

Prévisions

1

API externe

3

Équipe

30H

Développement

Démarche & Contraintes

01. Réflexion sur le front

Après plusieurs jours de travail sur le backend, nous avons envisagé d'abandonner Vue.js au profit de Twig, jugé plus simple. Cependant, l'accent du projet étant mis sur l'UI et l'UX, l'utilisation d'un framework réactif s'est imposée comme indispensable. Nous avons donc maintenu Vue.js malgré la complexité supplémentaire.

02. API externe

Pour l'accès aux données météo, j'ai créé un compte étudiant sur OpenWeatherMap, permettant pendant six mois l'accès à davantage de données qu'un compte gratuit. Malgré cela, certaines limitations de l'API (absence d'alertes météo et de détails avancés des prévisions) ont directement influencé nos choix d'interface et de fonctionnalités.


J'ai pris en charge la mise en place d'un service côté backend Symfony, permettant d'appeler les routes de l'API OpenWeatherMap et d'exposer nos propres routes au frontend. Côté frontend, j'ai intégré les requêtes API afin de récupérer et afficher les données météo.

03. Développement Frontend

Grâce à Vue.js, j'ai pu concevoir des composants réutilisables et mettre en place un store Pinia pour centraliser et partager les données météo entre les composants. Cette étape s'est révélée particulièrement exigeante, Pinia étant une technologie que j'utilisais pour la première fois dans un contexte réel, avec une volonté de rendre les méthodes génériques et réutilisables.


Par la suite, je me suis concentrée sur le frontend, afin d'éviter les conflits liés au travail simultané sur le backend. J'ai ainsi développé plusieurs composants permettant :
• l'affichage de la météo en direct pour une ville,
• la consultation des prévisions horaires,
• l'affichage des prévisions sur 15 jours via une interaction utilisateur.

04. Optimisation

Enfin, afin de limiter le nombre de requêtes vers l'API externe (un enjeu important dans ce type de projet), j'ai implémenté un système de mise en cache, permettant d'optimiser les appels externes et de réduire la charge sur l'API ainsi que sur le serveur backend.

Page d'accueil Page d'accueil sur Desktop
Page d'inscription Page d'inscription sur mobile
Page de favoris Page de favoris sur mobile
Page de prévisions Non connecté Page de prévisions Non connecté sur mobile
Page de résultat de recherche Page de résultat de recherche sur mobile
Desktop - Page de favoris Page de favoris sur desktop

Outils

Symfony Vue.js Pinia API externe

Compétences

Architecture modulaire Responsive design Optimisation
Bilan

Ce que je retiens de ce projet

Architecture & Environnement

Développement d'une application météo en Vue.js avec Pinia et backend Symfony, connectée à une API externe. Travail réalisé dans des conditions proches d'un projet réel, favorisant l'autonomie et la rigueur.

Performance & Expérience Utilisateur

Conception d'une interface minimaliste et modulaire, prise en compte des limites de Bootstrap, et mise en place d'un système de cache pour améliorer les performances et la scalabilité.

Améliorations & Perspectives

Évolutions envisagées : back-office utilisateur, géolocalisation, refactorisation du code, intégration d'alertes météo, gestion du mot de passe oublié et renforcement des tests.