Skip to main content

Comment on automatise les classements et les notifs live de centaines de matchs

Livescoring : polling toutes les 60 secondes, détection de transitions, push FCM. Sous le capot du moteur qui anime nos applis sportives.

Julien Trotoux
Julien Trotoux
Stade de football illuminé en soirée pendant un match
Photo : Siarhei Nester on Pexels

Un dimanche d'octobre, regardez un district de football amateur. Cinquante matchs en parallèle sur le territoire, deux personnes par bénévole pour reporter les scores, des feuilles de match remplies au stylo, et le lundi soir un site fédéral qui affiche encore les résultats du week-end précédent. Ce n'est la faute de personne — c'est l'état par défaut du sport amateur en France quand vous regardez sous le capot.

Quand on a commencé à construire des applis pour clubs et fédérations, on a vite compris que la moitié de la valeur perçue par un licencié, c'est de voir le score de son équipe en live et son classement à jour. Le reste, c'est cosmétique. Donc on a passé deux ans à construire ce qui s'appelle aujourd'hui Livesports : le moteur qui automatise classements, calendriers et livescores pour des centaines de compétitions amateurs en France.

🎯 Le problème : la donnée sportive amateur est encore largement manuelle

Les ligues professionnelles ont des fournisseurs de données (Opta, Stats Perform, Sportradar) qui couvrent chaque match en quasi temps réel. À partir du moment où vous descendez en district, en jeunesse, en sport non-football, ou en compétitions hybrides (championnats inter-quartiers, tournois locaux), cette donnée n'existe simplement pas.

Conséquence : si vous voulez afficher un score live ou un classement à jour, il faut soit demander à un humain de le saisir, soit construire votre propre infrastructure. La deuxième option est inaccessible à 99% des organisateurs amateurs. La première option transforme chaque dimanche soir en corvée.

🛠 Ce qu'on a construit — un scheduler qui ne dort jamais

Notre approche est volontairement non glamour : du cron classique, du polling robuste, et beaucoup de tests (319 actuellement, couverture 100% sur les chemins critiques). Trois tâches tournent en continu :

  • Livescores — chaque minute entre 12h et minuit. Le scheduler interroge nos sources (RapidAPI pour les sports majeurs, Footxplore pour le foot amateur français), compare l'état avec ce qui était stocké à la précédente itération, détecte les transitions de statut (1ère mi-temps, mi-temps, 2ème mi-temps, fin de match) et les événements (buts, cartons jaunes/rouges).
  • Rankings — 8 fois par jour. À heures fixes, on récupère les classements des ligues suivies, on met à jour les pages CMS côté Strapi, on régénère les overlays HTML de classement (rendus en Handlebars, exportés en image via Sharp).
  • Calendars — chaque nuit. Les calendriers d'équipes sont rafraîchis, les événements futurs créés ou mis à jour automatiquement.

Sur chaque transition détectée, une push FCM part vers les supporters et parents abonnés à l'équipe : « 1ère mi-temps terminée, 2-1 pour Le Mans » apparaît sur le téléphone dans les 60 secondes qui suivent l'arbitre. C'est ce qui transforme une appli de club en outil quotidien plutôt qu'en dépliant numérique.

Le moteur supporte aujourd'hui cinq sports actifs — football, basket, hand, rugby, volley — et tourne désormais sur nos serveurs souverains (la migration depuis Heroku a été achevée au printemps 2026).

📊 Ce que ça change pour vos adhérents et vos bénévoles

Côté licencié, l'effet est immédiat : son appli devient un outil consulté plusieurs fois par jour pendant la saison, pas un dépliant qu'on télécharge une fois et qu'on oublie. Les notifs push captent l'attention au bon moment (un but vient d'être marqué, le classement vient d'évoluer, un match est reprogrammé), sans saturation grâce à la logique de transitions qui ne déclenche que sur les vrais événements.

Côté bénévoles, c'est encore plus parlant : les heures du dimanche soir passées à reporter manuellement les scores et reconstruire les classements disparaissent. Le site web et l'appli se mettent à jour seuls. Le secrétaire de club récupère sa soirée.

C'est rarement le sujet d'un appel commercial — ça devient simplement la nouvelle normalité, et personne ne veut revenir en arrière. C'est le meilleur signal qu'on cherche.

À très vite, Julien