3e année · Alternance

FC Arceaux Montpellier, application du club

Application de gestion interne pour un club de football amateur, qui remplace les groupes WhatsApp et les tableurs du club.

En cours, sortie App Store prévue Développeur full stack, seul sur le projet App iOS et back-office
Flutter Dart Swift Symfony PHP MySQL API REST JWT Firebase Codemagic Railway
Quatre écrans de l'application du FC Arceaux Montpellier : accueil du coach, agenda, fiche match et statistiques de l'équipe

Pourquoi cette application ?

Le club gère ses convocations, ses présences et ses cotisations à la main. L'objectif : une app iOS pour les joueurs, les parents et les coachs, et un back-office privé pour le bureau du club.

Une première version avait été réalisée pendant mon BTS SIO. Celle-ci est une refonte complète.

Je suis seul sur le projet, comme développeur full stack : conception, maquettes, mobile, API, back-office et déploiement.

Ce que fait l'app

Pour les joueurs, les parents et les coachs.

Convocations

Convocations aux matchs et aux entraînements, avec réponse Présent / Incertain / Absent et relances par le coach.

Indisponibilités

Blessure, vacances, examens : chacun déclare ses indisponibilités et ses motifs d'absence.

Covoiturage

Covoiturage entre familles pour les déplacements.

Annonces

Annonces du club, avec réactions.

Statistiques

Statistiques de match, cartons et suspensions.

Cotisations

Suivi des cotisations et des échéances.

Autorisations parentales

Droit à l'image et transport, pour les joueurs mineurs.

Calendrier

Calendrier synchronisé avec l'agenda du téléphone, par abonnement .ics.

Face ID / Touch ID

Connexion par Face ID ou Touch ID.

L'espace du bureau du club

Un back-office privé, réservé au président, aux administrateurs et au trésorier.

Ce que gère le bureau
  • Adhésions
  • Licences
  • Certificats médicaux
  • Cotisations
  • Équipes
  • Invitations

Points techniques

Mobile
  • Flutter (iOS)
  • Widgets iOS natifs en Swift (WidgetKit) : 10 widgets, dont l'écran verrouillé
  • Vue dépliée des notifications avec boutons de réponse (Notification Content Extension)
  • Plus de 450 tests
API
  • Symfony
  • Authentification JWT avec refresh token
  • Droits par rôle (voters)
  • Tâches asynchrones (Messenger)
  • Notifications push via Firebase Cloud Messaging
  • E-mails transactionnels via Brevo
RGPD dès la conception
  • Pas de compte pour les mineurs : le parent gère tout
  • Export « Mes données »
  • Suppression de compte
  • Purge automatique des données 12 mois après le départ d'un joueur
CI/CD et hébergement
  • GitHub Actions pour l'API
  • Codemagic pour les builds iOS et TestFlight
  • Hébergement Railway (UE)

Technologies utilisées

Flutter Dart Swift Symfony PHP MySQL API REST JWT Firebase Codemagic Railway

L'application en images

Captures de l'app iOS, avec des données de démonstration.

Accueil du coach : prochain match contre l'AS Cévennes, compteur des réponses (12 présents, 2 incertains, 3 absents, 5 sans réponse) et bouton pour relancer 5 joueurs
Accueil coach
Fenêtre Connexion rapide qui propose d'activer Face ID pour ouvrir l'app sans mot de passe
Activation de Face ID
Écran Nouveau mot de passe avec les règles à respecter : 8 caractères minimum, un chiffre, une majuscule
Nouveau mot de passe
Écran Regarde tes mails : un lien de réinitialisation valable 30 minutes a été envoyé par e-mail
Lien de réinitialisation envoyé
Écran Regarde tes mails avec un compte à rebours de 27 secondes avant de pouvoir renvoyer le lien
Délai avant renvoi du lien
Écran Mot de passe oublié : saisie de l'e-mail du compte pour recevoir un lien
Mot de passe oublié
Écran de connexion en erreur, titre Hors-jeu, on réessaie, avec le message e-mail ou mot de passe incorrect
Erreur de connexion
Agenda en liste : entraînements et matchs passés avec scores, statuts Présent ou Annulé, filtres Matchs, Entraînements et Vie du club
Agenda en liste
Agenda en vue mois, septembre 2026, avec une pastille de couleur par match, entraînement ou événement du club
Agenda en vue mois
Fiche d'un entraînement avec horaire modifié à 19h30, boutons Présent, Incertain et Absent, thème de la séance et ajout au calendrier
Fiche entraînement
Fiche du match US Garrigues contre Arceaux : rendez-vous, maillot, lieu, réponse à la convocation et covoiturage avec 2 voitures proposées
Fiche match et covoiturage
Onglet Effectif de l'équipe Seniors B : le coach puis les joueurs classés par poste, gardiens et défenseurs
Effectif de l'équipe
Onglet Annonces : deux messages du coach, dont un épinglé, avec nombre de réactions et marqueur Vu
Annonces du coach
Statistiques du joueur : 6 matchs, 5 titularisations, 468 minutes, 4 buts, 3 passes décisives, 1 carton jaune, présence à l'entraînement et buts par match
Statistiques personnelles
Statistiques de l'équipe : bilan des matchs, buteurs, passeurs et classement de Départemental 2 où le FC Arceaux Montpellier est deuxième
Statistiques de l'équipe
Profil d'un joueur : licence valide, cotisation payée, pied fort, taille de maillot, contact d'urgence et raccourcis vers les indisponibilités et l'agenda
Profil du joueur
Écran d'ouverture Salut Lucas avec le bouton Face ID et le lien Utiliser mon mot de passe
Ouverture avec Face ID
Écran de connexion Prêt pour le match, avec champs e-mail et mot de passe et lien Mot de passe oublié
Connexion
Liste des notifications : convocation, horaire modifié, annonce du coach, rappel, résultat et entraînement annulé
Notifications
Réglages : notifications par type, droit à l'image, accès à Voir mes données, changement de mot de passe et connexion avec Face ID
Réglages
Écran Mes données : identité, contact, profil sportif, licence, cotisation, présences, statistiques, consentements et bouton pour recevoir une copie par mail
Mes données
Écran de changement de mot de passe : mot de passe actuel, nouveau mot de passe et confirmation
Changer de mot de passe
Panneau Contacter le club avec l'e-mail et le téléphone du secrétariat
Contacter le club
Fenêtre de confirmation Se déconnecter avec les boutons Me déconnecter et Annuler
Déconnexion
Retour aux projets