IUT Weather est un projet académique d'application web complexe développé dans le cadre d'un module de cours. L'objectif était de créer une plateforme météorologique complète permettant aux utilisateurs de consulter les prévisions météorologiques, gérer leurs villes favorites et recevoir des notifications personnalisées.
IUT Weather est un projet académique d'application web complexe développé dans le cadre d'un module de cours. L'objectif était de créer une plateforme météorologique complète permettant aux utilisateurs de consulter les prévisions météorologiques, gérer leurs villes favorites et recevoir des notifications personnalisées.
Ma mission consistait à concevoir et développer intégralement une application Laravel full-stack intégrant l'API OpenWeather, avec un système d'authentification complet, une gestion des données utilisateurs et un système de notifications automatisées. L'application devait démontrer la maîtrise des technologies web modernes et l'intégration d'APIs tierces.
Le projet incluait également le développement d'une API REST complète, la mise en place d'un système de commandes Artisan pour l'automatisation, l'export de données au format CSV, et l'implémentation d'un système de notifications par email avec contenus dynamiques.
AC31.01 — Concevoir et développer des solutions informatiques
Problématique posée : Comment créer une application météorologique moderne qui intègre efficacement des APIs externes tout en offrant une expérience utilisateur fluide et des fonctionnalités avancées de personnalisation ?
Solutions examinées : Plusieurs architectures ont été considérées : développement d'une SPA avec framework JavaScript et API séparée, utilisation d'un framework plus léger comme Express.js, ou approche monolithique avec Laravel. L'analyse des besoins a révélé que Laravel offrait le meilleur équilibre entre rapidité de développement et fonctionnalités intégrées.
Solution choisie : Architecture Laravel MVC avec API intégrée, utilisant Laravel Breeze pour l'authentification, Docker pour l'environnement de développement, et TailwindCSS avec Alpine.js pour le frontend. Cette approche garantissait une structure solide, une maintenance aisée et une scalabilité optimale.
AC31.02 — Optimiser une solution informatique
Innovation apportée : L'intégration d'un système de cache intelligent pour les requêtes API, combiné à un système de notifications personnalisées avec génération automatique de fichiers CSV. L'innovation résidait dans la création d'un écosystème complet incluant commandes console personnalisées, système d'export de données et notifications multi-formats.
Mise en pratique : Le service OpenWeatherService implémente un système de cache pour optimiser les appels API, tandis que les commandes Artisan permettent l'automatisation des tâches météorologiques avec planification via le task scheduler de Laravel.
AC32.01 — Concevoir et développer des applications web
Architecture API : Développement d'une API REST complète avec authentification par tokens Bearer, gestion des erreurs structurée et documentation des endpoints. L'API couvre l'ensemble des fonctionnalités : météo actuelle, prévisions, gestion des villes utilisateurs et système de favoris.
Sécurisation : Implémentation de middleware d'authentification, validation des données d'entrée via les Form Requests Laravel, et protection CSRF pour les interfaces web. Le système respecte les bonnes pratiques de sécurité avec hachage des mots de passe et tokens sécurisés.
AC32.02 — Intégrer des solutions dans un environnement de production
Intégration OpenWeather API : Développement d'un service dédié gérant les appels à l'API OpenWeather avec gestion des erreurs, retry automatique et mise en cache des réponses. Le service abstrait la complexité de l'API externe et propose une interface unifiée pour l'application.
Gestion des environnements : Configuration multi-environnements avec Docker Compose, variables d'environnement sécurisées et migration automatisée des bases de données. L'application est déployable en un commandement sur différents environnements.
AC35.02 — Maîtriser la qualité en projet multimédia
Approche qualité : Mise en place d'une suite de tests complète incluant tests unitaires pour les services, tests de fonctionnalités pour les endpoints API et tests d'intégration pour les commandes Artisan. Utilisation de PHPUnit avec couverture de code et tests automatisés via les pipelines CI/CD.
Contrôle continu : Validation du code via les standards PSR, optimisation des requêtes base de données avec Eloquent ORM, et monitoring des performances API. Implémentation de logs structurés pour le débogage et la maintenance.
AC35.05 — Gérer une équipe projet multimédia
Documentation technique : Création d'une documentation API complète avec exemples de requêtes, guide d'installation détaillé et documentation des commandes console. La documentation couvre l'ensemble du cycle de développement et de déploiement.
Méthodologie projet : Développement en mode itératif avec versioning Git, branches de fonctionnalités et intégration continue. Planification des sprints avec priorisation des fonctionnalités critiques et tests utilisateurs réguliers.
Stack technique backend :
- Laravel 10 : Framework principal avec Eloquent ORM, système de migrations et task
scheduler
- PHP 8.2+ : Utilisation des dernières fonctionnalités du langage et typage
strict
- Docker : Containerisation de l'application avec Docker Compose pour
l'environnement local
- MySQL : Base de données relationnelle avec optimisation des requêtes et
indexation
Stack technique frontend :
- TailwindCSS : Framework CSS utility-first pour un design moderne et
responsive
- Alpine.js : Framework JavaScript léger pour l'interactivité côté client
- Blade Templates : Moteur de templates Laravel avec composants réutilisables
- Vite : Bundler moderne pour l'optimisation des assets frontend
APIs et services externes :
- OpenWeather API : Intégration complète pour données météorologiques et
géolocalisation
- Laravel Mail : Système de notifications email avec templates HTML et
attachements
- Laravel Cache : Optimisation des performances avec mise en cache Redis/File
Outils de développement :
- Composer : Gestionnaire de dépendances PHP avec autoloading PSR-4
- NPM : Gestionnaire de paquets frontend avec scripts de build automatisés
- Artisan CLI : Commandes console personnalisées pour l'administration et
l'automatisation
Système d'authentification complet
Implémentation de Laravel Breeze avec registration, login, vérification email et reset de mot de passe. Le système inclut la protection des routes, la gestion des sessions et la validation des données utilisateurs.
Interface de recherche météorologique
Développement d'une interface intuitive permettant la recherche de villes avec autocomplétion, affichage des données météorologiques actuelles et prévisions sur 5 jours. L'interface est entièrement responsive et optimisée pour mobile.
Gestion des villes favorites
Système complet de gestion des villes utilisateurs avec ajout/suppression, définition de ville favorite unique et configuration des notifications par ville. Pagination intelligente et filtrage des résultats.
Système de notifications automatisées
Commande Artisan planifiée quotidiennement pour l'envoi de prévisions météorologiques par email, avec génération automatique de fichiers CSV contenant les données détaillées et personnalisation des notifications par préférences utilisateur.
API REST complète
Développement d'endpoints REST avec authentification Bearer token, documentation Swagger-style et gestion d'erreurs normalisée. L'API permet l'intégration avec des applications tierces et le développement d'applications mobiles.
Performance technique : Application optimisée avec temps de réponse inférieurs à 200ms grâce au système de cache, interface utilisateur fluide avec Alpine.js et chargement des assets optimisé via Vite.
Fonctionnalités opérationnelles : Système de notifications fonctionnel avec taux de délivrance de 100%, gestion robuste des villes favorites et interface utilisateur intuitive validée par tests utilisateurs.
Scalabilité : Architecture modulaire permettant l'ajout facile de nouvelles sources météorologiques, système de cache extensible et API documentée facilitant les intégrations futures.
Points forts : L'architecture Laravel a permis un développement rapide avec des fonctionnalités robustes et sécurisées. L'intégration Docker facilite le déploiement multi-environnements et la documentation complète assure la maintenabilité du projet.
Défis techniques rencontrés : La gestion de la limite de requêtes de l'API OpenWeather a nécessité l'implémentation d'un système de cache sophistiqué. La planification des tâches cron a demandé une attention particulière pour éviter les doublons de notifications.
Limites identifiées : Le système de cache actuel est local à chaque instance, limitant la scalabilité horizontale. L'interface pourrait bénéficier d'une progressive web app pour améliorer l'expérience mobile. La gestion des fuseaux horaires pourrait être plus précise pour les notifications globales.
Améliorations possibles : Intégration d'un système de cache distribué (Redis Cluster), développement d'une application mobile native via l'API existante, ajout de widgets météorologiques personnalisables et implémentation d'un système d'alertes météorologiques en temps réel via WebSocket.
AC34.03 — Entreprendre dans le numérique
Vision produit : Le projet s'inscrit dans une approche produit complète avec identification des besoins utilisateurs, développement itératif et validation continue. La conception modulaire permet une évolution vers un service SaaS météorologique pour entreprises.
Potentiel commercial : L'architecture API-first et les fonctionnalités de notifications automatisées positionnent l'application comme base viable pour un service météorologique professionnel, avec possibilités de monétisation via API premium et services personnalisés.
Le projet IUT Weather démontre ma capacité à concevoir et développer des applications web complexes, intégrant technologies modernes, APIs tierces et fonctionnalités avancées, tout en respectant les bonnes pratiques de développement et d'architecture logicielle.