Projet personnel, Depuis août 2026
Hockey Libre Genève
Les horaires de hockey libre des patinoires genevoises, réunis sur un seul site bilingue. Chaque patinoire a son calendrier à ajouter à Apple, Google ou Outlook, et il se met à jour tout seul chaque semaine.
Informations
- Rôle
- Conception, design et développement
- Statut
- En ligne
- Langues
- Français et anglais

Contexte
10 patinoires, 10 sites à vérifier.
À Genève, chaque patinoire publie ses horaires de hockey libre à sa manière : une page web, un bulletin PDF, un flyer. Pour savoir où patiner un samedi, il fallait ouvrir dix sites, dont certains affichaient encore la saison passée.
Je joue moi-même au hockey libre. Je voulais une seule page à consulter, et surtout un calendrier qu’on n’a plus besoin de revérifier.
Comment ça marche
- SourcesPages web et bulletins PDF publiés par les patinoires.
- ScrapersEn Python, lancés chaque semaine par GitHub Actions.
- Pull requestLes modifications arrivent dans une pull request.
- Site et calendriersLe site Astro et un fichier .ics par patinoire, plus un combiné.
- AgendaApple, Google ou Outlook se mettent à jour sans rien faire.
Un abonnement plutôt qu’une page à revisiter
Le calendrier est le canal principal. On s’abonne une fois, et les sessions ajoutées ou annulées arrivent d’elles-mêmes dans l’agenda.
Quand un scraper échoue, il garde le dernier état connu et me notifie l’erreur par e-mail.
# vernets.ics
BEGIN:VEVENT
SUMMARY:Hockey libre - Vernets
DTSTART;TZID=Europe/Zurich:20261004T110000
DTEND;TZID=Europe/Zurich:20261004T120000
END:VEVENT
Choix
Une annulation reste visible
Une session annulée après sa publication reste dans le calendrier, marquéeSTATUS:CANCELLED. Elle ne disparaît jamais en silence.Rien d’incertain affiché comme sûr
Si une source ne répond plus, le site garde les dernières données connues et les signale à revoir, plutôt que d’inventer ou d’effacer.Ni navigateur headless, ni OCR
Un choix assumé : des scrapers simples à maintenir, et une saisie à la main quand une source ne s’y prête pas.
En images
Le compte publie tout seul : une story chaque jour où il y a une session, l’ouverture et la fermeture de chaque patinoire, et un récapitulatif des 7 prochains jours chaque mardi. Les visuels sont des gabarits HTML rendus en images, puis publiés à heure fixe par un Worker Cloudflare. Instagram

Post de lancement 
Le vrai problème 
Ouverture d’une patinoire
Vidéos
Un reel Instagram qui explique l’abonnement au calendrier en quatre étapes.
Technologies
- Astro
- Site statique bilingue, français et anglais.
- Python
- Scrapers, génération des calendriers et des visuels Instagram.
- GitHub Actions
- Scrape hebdomadaire, pull request et alertes e-mail.
- Cloudflare Pages & Workers
- Hébergement et publications à heure fixe.
- iCalendar
- Un abonnement .ics par patinoire et un calendrier combiné.