Un site vitrine peut dormir la nuit. Une plateforme de supporters, non. Le samedi à 17 h 30, des milliers de choses se passent en même temps sur un terrain, et les fans veulent les voir, les commenter et les compter avant même que le ballon soit revenu au milieu.
FootKop est notre deuxième produit maison, après Cookuna. C’est la maison numérique des fans de foot : un espace de discussion par club, des pronostics gratuits sur chaque match et des classements pour savoir qui lit le mieux le jeu. Nous l’avons conçu, développé, et nous l’exploitons nous-mêmes. Lancé sur la Premier League et les coupes d’Europe, il couvre aujourd’hui douze compétitions d’Angleterre, de France, d’Espagne et d’Europe.
Cet article raconte ce que ce projet nous a appris sur un type de produit particulier : la plateforme communautaire qui vit au rythme d’événements extérieurs. Les écrans sont sur la fiche réalisation de FootKop. Ici, on parle de ce qu’il y a derrière.
L’idée : une tribune, pas un réseau social
Les supporters débattent déjà partout. Dans des groupes de messagerie qui débordent, sous des publications où se mêlent fans de tous les clubs, dans des commentaires d’articles qui tournent à l’insulte en trois réponses. Ce qui manque n’est pas un endroit de plus pour parler. C’est un endroit pensé pour vivre une saison entière avec les gens qui supportent le même club que vous.
FootKop part de cette idée simple. Chaque club a son Kop, du nom de la tribune mythique d’Anfield : un espace de discussion avec ses rubriques (le match, le mercato, le reste), modéré, à l’abri du bruit des réseaux. Autour, un jeu de pronostics donne une raison de revenir chaque semaine, et des classements donnent une raison d’en parler.
Le positionnement a tranché beaucoup de décisions dès le départ. Un réseau social pousse à publier vite et à réagir fort. Une tribune pousse à se retrouver. Nous avons donc fait l’inverse des réflexes habituels : pas de fil infini qui mélange tout, pas d’algorithme qui décide de ce que vous voyez, une organisation par club et par match.
Un jeu sans argent, des règles sans ambiguïté
Le pronostic sportif traîne une réputation, celle des paris. FootKop n’en est pas. Pas de cote, pas de mise, pas un centime en jeu : on pronostique pour le classement et pour la fierté d’avoir vu juste.
Le barème tient en deux lignes. Le score exact rapporte 3 points, le bon résultat sans le bon score en rapporte 1. Un prono se modifie jusqu’à dix minutes avant le coup d’envoi, puis il est figé.
Ce qui paraît simple à l’écran demande beaucoup de rigueur derrière. Quel score compte quand un match de coupe va en prolongation ? Celui de la 90e minute, et c’est écrit noir sur blanc. Que devient un prono quand un match est reporté ? Il suit la nouvelle date, sans rien ressaisir. Et un match annulé ? Il ne rapporte rien. Chaque cas limite a sa règle, sa réponse dans la FAQ et ses tests. Dans un jeu, une règle floue ne crée pas un bug, elle crée une dispute.
Le calcul des points se déclenche tout seul au coup de sifflet final. Il alimente treize classements : un par compétition, un classement général qui agrège tout, et un classement interne à chaque Kop pour se mesurer aux fans de son propre club. Sans action manuelle, sans tableur, sans « on recalcule demain ».
Le cœur du produit : des données de match justes, à la minute
Une plateforme de supporters vit ou meurt sur la fraîcheur de ses données. Un score qui n’a pas bougé dix minutes après un but, et la confiance s’effondre.
FootKop s’appuie sur un fournisseur de données sportives professionnel et sur une série de synchronisations, chacune à son rythme. Les compétitions, saisons et clubs se rafraîchissent une fois par mois. Le calendrier de la saison chaque nuit. Les classements deux fois par jour, et surtout dix minutes après chaque coup de sifflet final. Pendant les matchs, une synchronisation tourne chaque minute pour mettre à jour scores, statuts et minutes de jeu. Et chaque nuit, une passe de rattrapage récupère les compositions, les événements et les statistiques des derniers jours, au cas où une donnée serait arrivée en retard.
Ce découpage a deux vertus. Il respecte le quota d’appels du fournisseur, qui n’est pas infini. Et il ne coûte presque rien les jours sans match : la synchronisation en direct sort immédiatement quand aucune rencontre n’est en cours, pour le prix d’une seule requête en base.
Ce type d’intégration, nous le construisons aussi pour nos clients : relier un outil à une source externe, choisir la bonne fréquence pour chaque donnée, prévoir le rattrapage plutôt que d’espérer que tout arrive à l’heure. C’est une part importante de nos applications web sur mesure.
Les soirs de match : du direct et des pics
Un soir de grande affiche, l’usage change de nature. Les connexions arrivent toutes au même moment, autour du coup d’envoi. Et pendant la rencontre, le Kop bascule en chat : les messages doivent apparaître chez tout le monde sans recharger la page, en même temps que le score.
Côté technique, cela repose sur une connexion temps réel entre le serveur et le navigateur. Un nouveau commentaire ou un changement de score est diffusé à tous les supporters qui regardent la page du match, et l’interface se met à jour d’elle-même. Les tâches lourdes, comme le calcul des points ou l’envoi des notifications, partent dans des files d’attente pour ne jamais ralentir l’affichage.
La règle que nous appliquons : tout ce qui n’a pas besoin d’être fait pendant que l’utilisateur attend ne doit pas l’être. C’est elle qui permet de tenir un pic sans surdimensionner les serveurs le reste de la semaine. Et c’est la même logique que nous défendons pour tous nos projets : un site lent perd des clients, et la vitesse se décide à l’architecture, pas à la fin.
Modérer sans censurer
Une tribune sans modération devient vite invivable. Une tribune trop modérée devient vite vide. FootKop a donc reçu une modération à deux niveaux.
D’abord les supporters eux-mêmes. N’importe quel membre peut signaler un message. Un contenu qui accumule cinq signalements, pour au moins deux motifs différents, est masqué automatiquement en attendant qu’un modérateur tranche. Ensuite les modérateurs, qui disposent d’un back-office complet : signalements, sanctions, historique des actions, possibilité de rétablir un contenu masqué à tort.
Le détail le plus instructif est venu d’un audit de sécurité que nous avons mené sur notre propre produit. Le seuil de cinq signalements pouvait être atteint avec cinq comptes créés la veille : n’importe qui pouvait faire taire un membre en fabriquant des comptes jetables. Désormais, seuls comptent les signalements de comptes inscrits depuis au moins sept jours. C’est exactement le genre de faille qu’on ne voit pas en écrivant la fonctionnalité, et qu’on trouve en se demandant comment quelqu’un de malveillant l’utiliserait. La sécurité ne se rajoute pas en rustine, même sur un forum de foot.
De la Premier League à douze compétitions
FootKop a commencé avec un seul championnat, la Premier League, et les coupes qui l’entourent. Ce choix était délibéré. Un périmètre court permet de soigner chaque écran, de valider que la communauté prend, et de comprendre où sont les vraies difficultés avant de les multiplier.
L’arrivée de la Ligue 1 et de La Liga a été l’épreuve de vérité de l’architecture. Ajouter deux championnats, c’est ajouter des dizaines de clubs, leurs coupes nationales, leurs formats propres et leurs particularités. La Coupe de France, par exemple, voit entrer les clubs de Ligue 2 et de Ligue 1 à des tours différents, et le fournisseur de données nomme ses tours à sa façon. Chaque compétition a donc sa configuration : ses phases, ses tours, la façon de les afficher en français.
Parce que le code avait été pensé pour plusieurs compétitions dès le départ, même quand une seule était en ligne, l’extension a été un chantier de configuration et de contenu plus qu’une réécriture. C’est la différence entre une architecture qui anticipe sans surconstruire et une architecture qui oblige à tout reprendre au premier changement de périmètre.
La stack : la même base, poussée plus loin
FootKop repose sur notre base habituelle, avec quelques briques supplémentaires imposées par le temps réel.
- Laravel pour le cœur : synchronisations planifiées, calcul des points, classements, files d’attente, diffusion des événements en direct.
- Livewire pour l’interface interactive, de la grille de pronostics au chat de match, et Alpine.js pour les interactions locales.
- Tailwind CSS et une bibliothèque de composants pour une interface sombre par défaut, lisible sur un téléphone en tribune comme sur un ordinateur.
- Filament pour le back-office : compétitions, clubs, matchs, modération, emplacements publicitaires.
- Un moteur de recherche dédié, un serveur de cache et des files d’attente supervisées, pour que la recherche reste instantanée et que les pics ne bloquent rien.
Plus de 5 000 tests automatisés accompagnent l’ensemble. Ils ne sont pas là pour faire joli. Ils permettent de toucher au calcul des points, au format d’une coupe ou à la synchronisation sans se demander ce qui va casser samedi soir. C’est le soin invisible qui fait qu’un produit vivant reste maintenable.
Surveiller ce qui tourne quand personne ne regarde
Une plateforme comme FootKop travaille surtout quand personne n’est devant l’écran. Les synchronisations, la notation des pronos, le recalcul des classements et les purges imposées par le RGPD tournent toutes seules, planifiées à la minute, à l’heure ou à la nuit.
Ce fonctionnement a un piège que nous avons appris à connaître. Si le planificateur s’arrête, tout s’arrête en même temps, en silence : plus de scores en direct, plus de points attribués, et pourtant le site continue de répondre normalement. Une sonde qui se contente de vérifier que la page d’accueil s’affiche ne voit rien.
FootKop émet donc un battement chaque minute, qu’une sonde externe vérifie. Si le battement cesse, l’arrêt devient une alerte comme une autre. Une seconde vérification passe régulièrement en revue les dépendances du service (base de données, cache, serveur temps réel, moteur de recherche, files d’attente) et signale celle qui flanche. Les erreurs de l’application remontent dans notre outil de suivi, et l’audience se mesure sans cookie.
C’est le genre de dispositif qu’on ne remarque que lorsqu’il manque. Pour nos clients, il fait partie de ce que nous mettons en place dès qu’une application dépend de tâches automatiques, et il est au cœur de nos contrats de maintenance Laravel.
Gratuit, financé par la publicité, respectueux des données
L’inscription et les fonctionnalités communautaires sont gratuites. Ce modèle se finance par la publicité, et nous avons voulu qu’il reste compatible avec le respect du choix des visiteurs : quand quelqu’un refuse les traceurs, il voit des campagnes contextuelles, liées à la page plutôt qu’à son profil. Une offre Premium facultative permet de retirer les emplacements publicitaires.
Côté données, l’hébergement est en France et le service est conforme au RGPD. Chaque membre peut exporter ou supprimer toutes ses données depuis son profil, à tout moment, sans écrire à personne. Nous avons appliqué ici les mêmes principes que ceux de notre article RGPD et cookies sans migraine.
Sur mobile, FootKop s’installe comme une application depuis le navigateur. Une application native iOS et Android viendra dans un second temps, quand l’usage l’aura justifié, selon la logique que nous détaillons dans notre guide native, hybride ou PWA.
Ce que FootKop nous a appris
Les règles d’un jeu sont un produit à part entière. Le barème tient en deux lignes, les cas limites en deux pages. Ce sont ces deux pages qui évitent les disputes.
Les données externes se traitent comme une dépendance fragile. Chaque type de donnée a son rythme, et chaque synchronisation a son rattrapage.
Le temps réel se réserve à ce qui en a besoin. Le score et le chat sont en direct ; le reste peut attendre quelques secondes dans une file.
Une fonctionnalité communautaire doit être pensée par l’abus. La question n’est pas seulement « est-ce que ça marche », mais « comment quelqu’un pourrait s’en servir contre un autre membre ».
Commencer petit, mais construire pour la suite. Un seul championnat au départ, une architecture prête pour douze.
Si vous préparez une plateforme où une communauté se retrouve, ou un produit qui doit lancer une première version sans se fermer de portes, nos réflexions sur le développement de SaaS sur mesure sont un bon point de départ. Et pour en parler concrètement, racontez-nous votre projet.
Cet article vous intéresse ? Allons plus loin ensemble.
Parlons de votre plateforme