# 🌤️ Météo Sénégal
Application Flutter complète affichant la météo en temps réel de 5 villes du Sénégal, avec une expérience de chargement animée, une interface inspirée d'Apple Weather, et une carte interactive pour chaque ville.
## ✨ Fonctionnalités
- **Écran d'accueil** dynamique (dégradé selon l'heure réelle, soleil/lune animés)
- **Jauge de progression animée** avec messages rotatifs pendant le chargement des données
- **Appels API réels et décalés** vers OpenWeather pour 5 villes sénégalaises (Dakar, Thiès, Saint-Louis, Ziguinchor, Touba)
- **Tableau interactif** des villes avec cartes en verre dépoli (glassmorphism)
- **Détail par ville** : météo actuelle, prévisions horaires, description contextuelle, et localisation sur Google Maps
- **Gestion d'erreurs** individuelle par ville + détection globale de perte de connexion
- **Mode clair / sombre** avec palette premium
- **Unité °C / °F** au choix, persistante
- **Transitions animées** en fondu entre les écrans
- **Tests unitaires et widgets**
## 🛠️ Stack technique
| Domaine | Techno |
|---|---|
| Framework | Flutter (Android, iOS, Web) |
| State management | Riverpod |
| Réseau | Retrofit + Dio |
| Cartes | Google Maps (`google_maps_flutter`) |
| Météo | OpenWeather API |
| Navigation | go_router |
| Icônes météo | Meteocons (SVG) |
| Gestion d'erreurs | fpdart (Either/Failure) |
| Tests | flutter_test, mocktail |
## 🏗️ Architecture
Le projet suit une **Clean Architecture allégée**, en 3 couches :
```
lib/
├── core/ # Constantes, thème, réseau, erreurs, utilitaires
├── data/ # Modèles (DTO), datasources API, implémentation repository
├── domain/ # Entities, interfaces repository, usecases
└── presentation/ # Providers Riverpod, écrans, widgets, navigation
```
- `domain/` ne dépend d'aucune techno externe (ni Flutter, ni Dio) → testable en isolation
- `data/` est la seule couche qui parle Ă l'API OpenWeather
- `presentation/` ne consomme que des entities du domain, jam …