Application météo desktop 100% open source, construite avec React + Vite, sans compte utilisateur, sans clé API, sans télémétrie. Toutes les données proviennent de services gratuits et conformes RGPD.
- Image contextuelle — photo de la ville via Wikimedia Commons, avec fallback automatique sur le drapeau du pays (via flagcdn.com) si aucune image n'est trouvée en 5 secondes
- Alertes météo automatiques — bandeaux dismissables pour vent fort (≥30 km/h), UV élevés (≥6), précipitations, gel, cumul journalier important
- Prévisions horaires — carousel des 24 prochaines heures, cliquable, avec probabilité de précipitation
- Métriques temps réel — Humidité (+ point de rosée), Indice UV (+ barre colorée), Vent (vitesse + direction), Pression atmosphérique (+ tendance)
- Courbe de température — graphique Chart.js animé, amplitude automatique ±3° autour du min/max réel
- Prévisions 7 jours — cartes cliquables avec lever/coucher du soleil et probabilité de pluie
- Fenêtre détail journée — modal avec 8 métriques : max/min, précipitations, prob. pluie, vent max, UV, lever et coucher du soleil
- Fond de carte au choix : Standard (OSM), Topographie, Sombre (CARTO), Satellite (Esri)
- Données météo sur la carte — grille 5×5 de 25 points en temps réel via Open-Meteo
- 4 overlays fonctionnels : Précipitations (cercles proportionnels), Température (gradient froid→chaud), Vent (vert→rouge), Nuages (opacité)
- Zoom +/− fonctionnel, bouton "Ma position" (GPS)
- Légende contextuelle adaptée au calque sélectionné
- Vue En Direct — jauge IQA circulaire, 6 polluants (PM2.5, PM10, NO₂, O₃, CO, SO₂), recommandations santé
- Historique 24h — graphique en barres Chart.js coloré par niveau, tableau heure par heure
- Mode 24h — données horaires du contexte React (aucun appel API supplémentaire)
- Modes 7j / 30j / 90j — Open-Meteo Archive API, graphiques température + précipitations
- Export CSV — fichier nommé automatiquement avec ville et période
- Bascule °C / °F persistée (appliquée sur tous les écrans)
- Sélecteur de langue persisté (préférence sauvegardée, i18n complet encore à venir)
- Préférences de notifications configurables par type
- Section "À propos" avec version, licence et liens sources
- Aide contextuelle — bouton
?sur le tableau de bord et sur les pages secondaires, panneau latéral slide-in - 5 aides dédiées aux pages principales : Tableau de bord, Cartes, Qualité de l'air, Historique, Paramètres
- fermeture par clic extérieur ou touche
Échap - le contenu de l'aide reflète maintenant l'état réel des fonctionnalités implémentées
- branche dédiée
netlifypour la version web - configuration prête via
netlify.toml - mise en page mobile portrait améliorée pour les écrans de téléphone
git clone https://github.com/nouhailler/meteor-weather.git
cd meteor-weather/app
npm install
npm run dev
# → http://localhost:5173Le dépôt peut être maintenu avec deux variantes dans un seul repo :
mainpour la version originale et le packaging Debiannetlifypour la variante déployée sur Netlify
Configuration Netlify recommandée :
Base directory: app
Build command: npm run build
Publish directory: distLe fichier netlify.toml à la racine contient déjà cette configuration, avec une redirection SPA vers index.html.
# Téléchargez le fichier .deb depuis la page Releases
sudo dpkg -i meteor-weather_1.2.0_amd64.deb
sudo apt install -f # Résoudre les dépendances manquantes si nécessaire
# Lancez l'application
meteor-weather| Couche | Technologie |
|---|---|
| Framework | React 18 + Vite 5 |
| État global | React Context + localStorage |
| Graphiques | Chart.js 4 + react-chartjs-2 |
| Cartes | Leaflet 1.9 + react-leaflet 4 |
| Icônes | Material Symbols Outlined |
| Typographie | Manrope + Inter (Google Fonts) |
| Météo | Open-Meteo API (gratuit, sans clé) |
| Qualité de l'air | Open-Meteo Air Quality API |
| Historique | Open-Meteo Archive API |
| Géocodage | Nominatim / OpenStreetMap |
| Images villes | Wikimedia Commons API |
| Drapeaux | flagcdn.com |
| Packaging | Paquet Debian (.deb) |
meteor-weather/
├── app/ # Code source React/Vite
│ ├── index.html # Point d'entrée (Leaflet CSS inclus)
│ ├── package.json
│ └── src/
│ ├── App.jsx # Routeur principal + WeatherProvider
│ ├── WeatherContext.jsx # État global (location, météo, prefs)
│ ├── WeatherDashboard.jsx # Page Tableau de bord (layout complet)
│ ├── Layout.jsx # Shell partagé sidebar + header + aide
│ ├── SearchBar.jsx # Recherche Nominatim + GPS
│ ├── HelpPanel.jsx # Documentation contextuelle (panneau ?)
│ ├── DayDetailModal.jsx # Modal détail journée (portal React)
│ ├── LoadingState.jsx # Spinner + ErrorState
│ ├── tokens.js # Design system (couleurs, styles partagés)
│ ├── hooks/
│ │ ├── useWeather.js # Open-Meteo forecast + computeAlerts()
│ │ ├── useAirQuality.js # Open-Meteo Air Quality
│ │ ├── useHistorical.js # Open-Meteo Archive (7/30/90j)
│ │ ├── useGeoSearch.js # Nominatim + GPS
│ │ ├── useNearbyWeather.js # Grille 5×5 autour de la ville (carte)
│ │ └── useCityImage.js # Wikipedia → image ville, fallback drapeau
│ └── pages/
│ ├── CartesPage.jsx # Leaflet + overlays météo
│ ├── AirPage.jsx # Jauge IQA + polluants + historique 24h
│ ├── HistoriquePage.jsx # 24h/7j/30j/90j + Chart.js + export CSV
│ └── ParamètresPage.jsx # Préférences + À propos + Sources
├── packaging/
│ ├── build-deb.sh # Build Electron → .deb
│ └── push-github.sh # git + gh CLI → GitHub + release
└── README.md
- Les aides contextuelles sont bien implémentées pour les 5 pages principales via
HelpPanel.jsx. - Le tableau de bord ouvre son aide depuis
WeatherDashboard.jsx. - Les pages secondaires (
Cartes,Qualité de l'air,Historique,Paramètres) ouvrent leur aide depuisLayout.jsx. - La fermeture par clic extérieur et par touche
Échapest implémentée. - Le contenu d'aide sur la langue et les notifications a été ajusté pour correspondre au code actuel.
- Le sélecteur de langue persiste la préférence, mais l'i18n complet n'est pas encore implémenté.
- Les préférences de notifications sont stockées localement, mais il n'existe pas encore de notifications navigateur natives.
| Service | Usage | URL |
|---|---|---|
| Open-Meteo | Météo temps réel + prévisions | https://open-meteo.com |
| Open-Meteo Air Quality | PM2.5, PM10, NO₂, O₃, CO, SO₂ | https://air-quality-api.open-meteo.com |
| Open-Meteo Archive | Historique jusqu'à 90 jours | https://archive-api.open-meteo.com |
| Nominatim / OSM | Géocodage + autocomplétion | https://nominatim.openstreetmap.org |
| OpenStreetMap | Tuiles de carte standard | https://www.openstreetmap.org |
| CARTO | Tuiles carte sombre | https://carto.com |
| Esri | Tuiles satellite | https://www.esri.com |
| Wikimedia Commons | Photos des villes | https://commons.wikimedia.org |
| flagcdn.com | Drapeaux des pays | https://flagcdn.com |
npm run dev # Serveur développement avec hot-reload → localhost:5173
npm run build # Build de production → app/dist/
npm run preview # Prévisualiser le buildcd ~/claude-workspace/meteor
# Build uniquement
bash packaging/build-deb.sh
# → meteor-weather_1.2.0_amd64.deb dans release/
# Push GitHub + release + .deb attaché
bash packaging/push-github.sh- Support multilingue complet (i18n)
- Widgets météo configurables
- Mode hors-ligne avec cache des dernières données
- Support OpenWeatherMap (tuiles météo temps réel sur la carte)
- Thèmes de couleur alternatifs
Les contributions sont les bienvenues !
- Forkez le projet
- Créez une branche (
git checkout -b feature/ma-fonctionnalite) - Commitez vos changements (
git commit -m 'feat: description') - Poussez (
git push origin feature/ma-fonctionnalite) - Ouvrez une Pull Request
Distribué sous licence MIT. Voir LICENSE pour plus d'informations.
Projet maintenu par Patrick
Aucun compte requis · Aucune clé API · 100% open source
