01. Contexte métier & défis
Contexte métier
Spash est une application mobile dédiée au sport amateur. Sur des terrains équipés de caméras (foot, padel, tennis, badminton, basket), chaque rencontre est automatiquement filmée en multi-angles, analysée et restituée aux joueurs sous forme de vidéos, statistiques et highlights — exactement comme dans le sport professionnel.
Notre client souhaitait offrir à ses utilisateurs une expérience clé en main, depuis le scan d'un QR code sur le terrain jusqu'au partage d'un clip vidéo entre amis, en passant par le suivi des compétitions, des équipes et des classements.
La solution s'adresse à plusieurs profils :
- Les joueurs occasionnels qui scannent le QR code du terrain pour accéder instantanément à leur match, sans création de compte préalable
- Les joueurs réguliers qui suivent leurs sessions, leurs équipes, leurs statistiques et leurs compétitions dans le temps
- Les capitaines et administrateurs d'équipes qui gèrent les membres, valident les demandes et consultent les classements
- Les organisateurs de tournois qui exposent leurs compétitions, journées et classements dans l'application
Défis rencontrés
- Onboarding sans friction sur le terrain via QR code et deep links Branch, avec bascule fluide vers un compte authentifié
- Player vidéo personnalisé multi-angles et multi-qualités, synchronisé avec la timeline d'événements détectés (buts, jeux, buzz)
- Statistiques avancées hétérogènes selon le sport pratiqué : heatmaps de zones, possession, classement buteurs, sets et jeux pour les sports de raquette
- Outil de découpe vidéo embarqué côté mobile, permettant d'extraire et de partager une séquence en quelques secondes
- Multi-langue FR / EN / ES avec mise à jour à chaud des traductions, sans nouvelle release
- Robustesse de l'expérience : monitoring temps réel des erreurs et télémétrie analytics fine
02. Fonctionnalités principales
L'application couvre l'intégralité du parcours du joueur, organisée autour de quatre grands pôles fonctionnels.
Onboarding & accès terrain
- Page d'accueil à trois portes d'entrée : déjà joué, sur le terrain (scan), connexion classique
- Scan de QR code natif via la caméra, avec gestion fine des permissions et bascule deep link Branch
- Authentification email, Google Sign-In et Apple Sign-In, avec stockage sécurisé du jeton
- Carte interactive des centres sportifs avec géolocalisation, recherche flottante et favoris
Capture & contrôle de session live
- Lancement d'une session sur le terrain en choisissant la durée : 30 minutes, 1 heure ou 2 heures
- Détection des sessions déjà en cours sur le même terrain, avec confirmation utilisateur avant remplacement
- Écran de contrôle dédié : timer plein écran, animations visuelles, bouton Buzz pour marquer en direct un moment fort
- Reprise automatique du décompte après une mise en arrière-plan de l'application
Replay & analyse de match
- Player vidéo personnalisé multi-angles et multi-qualités, plein écran, avec sélection de caméra
- Trois onglets synchronisés avec la vidéo : Événements, Composition, Statistiques
- Timeline d'événements cliquables (buts, jeux raquette, buzz, événements génériques) avec saut vidéo et export par séquence
- Statistiques sport-spécifiques : meilleurs joueurs (homme du match, défenseur, attaquant), heatmaps de zones, classement buteurs, possession, courbes de buts
- Like, partage natif via deep link Branch, envoi de la vidéo par email, sauvegarde dans la galerie
Vie sociale & contenus
- Feed d'accueil filtrable par type : sessions, buzz, compétitions, news, concours
- « Mon activité » : sessions, highlights et compétitions personnelles
- Recherche transverse : sessions, équipes, compétitions, centres
- Équipes : membres, sessions, leaderboards, highlights, gestion capitaines / admins, demandes d'adhésion
- Compétitions : journées et classements équipes, buteurs, passeurs
- Articles, news et concours avec soumission de highlight depuis l'app
- Profil utilisateur avec édition, favoris centres et historique d'équipes
Onboarding et scan de QR code sur le terrain
Replay vidéo multi-angles synchronisé avec la timeline d'événements
Statistiques détaillées : heatmaps, meilleurs joueurs, classement buteurs
Pilotage d'une session en direct — timer plein écran et bouton Buzz
Capture live & moments forts
Une fois la session lancée depuis le terrain, le joueur garde la main sur son match : il visualise le décompte, peut mettre en pause son activité, et surtout déclenche en direct un Buzz à chaque action mémorable. Ces marqueurs sont automatiquement intégrés à la timeline du replay et exposés dans le feed Buzzs.
- Scan du QR code du terrain → choix de la durée → lancement instantané
- Timer plein écran avec gestion du retour en arrière-plan
- Bouton Buzz avec animation visuelle dédiée à chaque pression
- Confirmation et résumé en fin de session, avec accès direct au replay
Application mobile
Feed d'accueil
Carte des centres
Équipe & classement
03. Notre solution : conception & développement
Approche
Nous avons conçu une architecture Flutter modulaire reposant sur Riverpod et la génération de code (Freezed, riverpod_generator) pour garantir la fiabilité de l'état applicatif, la fluidité du player vidéo, et une expérience utilisateur taillée pour chaque profil.
Fonctionnalités clés livrées
- Player vidéo personnalisé multi-angles et multi-qualités, synchronisé avec la timeline d'événements
- Outil embarqué de découpe vidéo (clip) avec partage par deep link Branch
- Statistiques spécifiques par sport pour le foot, les sports de raquette et le basket
- Authentification Google, Apple et email avec persistance sécurisée
- Mode invité via QR code, avec bascule transparente vers un compte authentifié
- Internationalisation FR / EN / ES, avec mise à jour à chaud des traductions via Localizely
- Détection et reprise des sessions en cours, gestion fine du cycle de vie applicatif
- Partages riches (deep links Branch) pour sessions, équipes, centres et clips
Déploiement et maintenance
- Trois environnements isolés : développement, staging, production, avec endpoints API distincts
- Version Flutter verrouillée via FVM (3.19.6) pour la reproductibilité des builds
- CI/CD Fastlane sur Android et iOS, distribution interne via Firebase App Distribution et TestFlight
- Monitoring continu : Firebase Crashlytics, Sentry et Firebase Analytics avec événements métiers personnalisés
- Mise à jour applicative forcée via
upgraderpour garantir la compatibilité avec l'API
Architecture mobile Spash — Terrain connecté → API Spash → Application Flutter