Retour aux projets

Le Club

Plateforme unifiée pour la gestion et le recrutement dans le football

Distributed SystemsBackend EngineeringGraphQLNode.jsTypeScriptOpenID Connect
Le Club's logo

Le football amateur et semi-pro souffre d’un problème de coordination : joueurs, coachs et clubs changent constamment d’environnement, mais les outils restent fragmentés (WhatsApp, Excel, sites fédéraux).

J’ai conçu et développé Le Club, une plateforme unifiée qui centralise la gestion sportive, l’historique des matchs et la visibilité des joueurs pour les coachs, clubs et recruteurs.

Un même socle de données alimente des expériences différentes : un coach gère ses entraînements et son effectif, un joueur suit ses performances, un club organise plusieurs équipes, et un recruteur découvre des profils avec des données vérifiées.


Fonctionnalités principales

  • Plateforme multi-rôles (joueurs, coachs, clubs, recruteurs) avec accès unifié
  • API GraphQL couvrant équipes, joueurs, matchs, entraînements et compétitions
  • Système d’authentification et d’autorisation basé sur OIDC avec gestion fine des rôles
  • Notifications temps réel pour événements sportifs et interactions utilisateurs
  • Pipeline d’ingestion de données football avec sources externes vérifiées

Résultats clés

  • Unification de workflows fragmentés en une plateforme cohérente multi-acteurs
  • Modèle d’identité unique évitant la duplication logique entre backend et clients
  • Accès aux données sécurisé via role-based access control et row-level security
  • Enrichissement automatique de la plateforme via ingestion de données à grande échelle

Architecture

Le Club est un monorepo polyglotte TypeScript/Python composé de services distribués :

  • API (Node.js + Koa + Apollo GraphQL)
    Expose un modèle unifié pour clubs, équipes, joueurs et événements, basé sur MongoDB
  • Identity Layer (OIDC provider)
    Fournit authentification et autorisation avec gestion des rôles et intégration Hasura
  • Notifications (RabbitMQ + Server-Sent Events)
    Système temps réel découplé pour la diffusion d’événements aux clients
  • Data Pipeline (Python + Celery + Redis)
    Scraping et normalisation de données football (FFF, RBFA, Soccerway, etc.)

Points techniques clés

  • Implémentation d’un provider OpenID Connect complet avec flows PKCE et auth email/téléphone
  • Modélisation des événements via Mongoose discriminators (tournois, matchs, entraînements)
  • Système de notifications temps réel via SSE découplé avec RabbitMQ
  • Pipeline ETL distribué avec rotation de proxies (Scrapoxy) pour ingestion à grande échelle
  • Partage de types TypeScript et configuration dans un monorepo multi-services

Mon rôle

Responsabilité end-to-end :

  • Design de l’architecture et du modèle de données
  • Implémentation de l’API GraphQL et de la couche d’identité
  • Mise en place du système de notifications temps réel
  • Développement du pipeline d’ingestion de données
  • Contribution aux applications frontend (React, gestion vidéo et annotation)