Tous les projets

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
Page d’accueil du site Hockey Libre Genève

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

  1. Sources
    Pages web et bulletins PDF publiés par les patinoires.
  2. Scrapers
    En Python, lancés chaque semaine par GitHub Actions.
  3. Pull request
    Les modifications arrivent dans une pull request.
  4. Site et calendriers
    Le site Astro et un fichier .ics par patinoire, plus un combiné.
  5. Agenda
    Apple, 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ée STATUS: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

Instagram

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 : 10 patinoires, un seul calendrier
    Post de lancement
  • Post : le vrai problème, 10 patinoires, 10 horaires à vérifier
    Le vrai problème
  • Post : ouverture des Vernets dès le dimanche 4 octobre, 11:00–12:00
    Ouverture d’une patinoire

Vidéos

Un reel Instagram qui explique l’abonnement au calendrier en quatre étapes.

Comment ça marche · reel Instagram

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é.