tfrere/met-office-isobars
Cartes de pression · Met Office
Petite app web qui archive jour après jour la carte d'analyse de pression de surface (isobares + fronts) publiée par le Met Office pour l'Europe et l'Atlantique Nord-Est, et permet de scruber dans le temps via une timeline.
Le Met Office ne garde en ligne que les ~7 derniers jours. Cette app récupère la carte du jour (et backfill les jours encore disponibles), puis la stocke dans un dataset Hugging Face pour constituer une archive qui grandit au fil de l'eau.
- Frontend : Vite + React + TypeScript + MUI. Image plein écran + timeline.
- Backend : FastAPI. Tâche de fond qui récupère la carte d'analyse N&B, l'archive dans un dataset HF (
huggingface_hub) et expose le manifest. - Déploiement : un seul conteneur Docker (pattern Hugging Face Space).
API
Tant que l'archive se remplit, /api/frames renvoie { "status": "building" }, puis le payload complet une fois "status": "ready".
Source des données
Cartes officielles "Surface Pressure Charts" du Met Office (API consommateur utilisée par leur site) :
https://data.consumer-digital.api.metoffice.gov.uk/v1/surface-pressure/
bw/{YYYY-MM-DD}T1200/1200_ASXX_Assistant_FC000.gifOn récupère la carte d'analyse (T+0, état observé) en noir & blanc, run de 12:00 UTC (repli sur le run 00:00 si absent).
© Crown copyright, Met Office. Réutilisation soumise à leurs conditions (fair usage).
Archive (dataset Hugging Face)
Les cartes sont commitées dans un dataset HF (une image par jour + manifest.json), ce qui permet de survivre aux redémarrages / rebuilds du Space et de bâtir une archive longue durée.
Configuration via variables d'environnement :
SansHF_TOKEN, l'app fonctionne quand même : elle archive localement pour la session courante (perdu au redémarrage), mais ne persiste pas dans le dataset. Sur le Space, ajouteHF_TOKENdans Settings → Secrets (write).
Développement local
Deux terminaux :
# 1. Backend (port 7860)
cd server
pip install -r requirements.txt
# optionnel : export HF_TOKEN=hf_xxx pour tester la persistance dataset
python app.py
# 2. Frontend (port 5173, proxy /api -> 7860)
npm install
npm run devBuild de production (comme sur le Space)
docker build -t met-office-isobars .
docker run -p 7860:7860 -e HF_TOKEN=hf_xxx met-office-isobars
# -> http://localhost:7860CI/CD (GitHub → Hugging Face)
Le dépôt `tfrere/met-office-isobars` sur GitHub est la source de vérité. Deux workflows GitHub Actions :
Il suffit donc de :
git push origin main # -> déploie sur le Space automatiquementPrérequis : le secret HF_TOKEN (write) doit être configuré dans les Settings → Secrets du repo GitHub et dans ceux du Space (pour l'archivage côté Space).
Le Space détecte le Dockerfile (SDK docker) et publie sur le port 7860.
