Ce document dĂ©crit l'intĂ©gralitĂ© de la fonctionnalitĂ© Tournois telle qu'elle est implĂ©mentĂ©e : organisation et hĂ©bergement d'un tournoi par un club (tournoi de jeunes / plateau, seniorsâŠ), de la crĂ©ation jusqu'Ă la page publique pour les spectateurs.
Gestionnaire = actions réservées au créateur , aux co-organisateurs ajoutés, ou à un admin du club .
Tous = visible par tous les membres du club (lecture).
1. AccĂšs, rĂŽles et cycle de vie
Niveau club : les tournois appartiennent au club (et non Ă un groupe). Le bouton đ Tournois est accessible depuis la page du club Ă Tous les membres.
RÎles de gestion : le créateur du tournoi, les co-organisateurs qu'il ajoute, et les admins du club peuvent tout gérer. Les autres membres sont en lecture seule.
Liste des tournois : chaque tournoi affiche son nom, sa date, son lieu et son statut (Brouillon / En cours / Terminé).
Durée de vie (TTL) : un tournoi est conservé 1 an (champ expireDate), puis supprimé automatiquement avec toutes ses données associées (équipes + matchs) par une tùche planifiée quotidienne.
Suppression manuelle Gestionnaire : un bouton supprime le tournoi et ses sous-collections (équipes, matchs), avec confirmation.
2. Création d'un tournoi
Gestionnaire (tout membre du club peut créer et devient créateur). Formulaire :
Nom du tournoi (obligatoire).
Date et lieu .
Format : Poules + phases finales / Poules seules / Ălimination directe.
à la création, des valeurs par défaut sont posées : 1 terrain (« Terrain 1 »), barÚme 3-1-0, départage FIFA, durée de poule 12 min, durée de finale 15 min, repos 3 min, pause repas à 12:00 (45 min min/équipe), reprise 13:30, début 09:00. Le créateur est ajouté comme organisateur, un identifiant de partage public est généré, et expireDate est fixé à +1 an.
3. Configuration
Gestionnaire . Toute la configuration structurelle est masquée une fois le tournoi figé ou commencé (voir §4).
3.1 Durées & horaires
Réglage RÎle
Heure de début Départ des premiers matchs de poule.
Durée match de poule Durée d'un match de poule (min).
Durée match de finale Durée d'un match de phase finale (min).
Repos entre matchs Temps minimum entre deux matchs (équipe et terrain).
Pause repas à partir de Heure à partir de laquelle on cale la pause déjeuner.
Pause repas min / équipe Durée minimale de pause repas garantie par équipe.
Reprise l'aprÚs-midi Heure à laquelle toutes les équipes ont fini leur pause (reprise).
Phases finales l'aprÚs-midi uniquement Force le démarrage des finales à la reprise de l'aprÚs-midi.
La pause déjeuner est « flexible » : elle n'est pas fixe. DÚs qu'un match d'une équipe tomberait aprÚs l'heure de début de pause, l'équipe prend sa pause (au moins la durée min) et ne rejoue qu'à partir de la reprise de l'aprÚs-midi.
3.2 BarĂšme de points (choix obligatoire)
BarĂšme Attribution
3-1-0 (moderne)Victoire 3 · Nul 1 · Défaite 0.
4-2-1 (amateur historique)Victoire 4 · Nul 2 · Défaite 1.
3-2-1-0 (avec tirs au but)Victoire (temps réglementaire) 3 · Victoire aux t.a.b. 2 · Défaite aux t.a.b. 1 · Défaite 0. En cas de nul, l'organisateur désigne le vainqueur des tirs au but sur le match.
3.3 Départage des égalités (choix obligatoire)
Configuration Ordre des critĂšres (aprĂšs les points)
UEFA Confrontation directe â goal-average gĂ©nĂ©ral â buts marquĂ©s.
FIFA Goal-average gĂ©nĂ©ral â buts marquĂ©s â confrontation directe.
Express Goal-average gĂ©nĂ©ral â tirs au but.
Les critÚres fair-play (cartons) et tirage au sort ne sont pas calculés automatiquement : ils resteraient un départage manuel. La partie calculable (points, confrontation directe, goal-average, buts marqués) est appliquée selon la configuration choisie.
PrĂ©cision : l'application collecte bien les cartons, mais sur les matchs d'un groupe (module Statistiques du match en direct). Les matchs de tournoi sont un modĂšle distinct, sans saisie de cartons â d'oĂč l'absence de dĂ©partage fair-play ici.
3.4 Terrains & co-organisateurs
Terrains : liste modifiable (ajout / suppression), utilisĂ©e par la planification multi-terrains. Retirer un terrain dĂ©place les matchs qui y Ă©taient programmĂ©s vers un terrain restant, et le nombre de matchs dĂ©placĂ©s est annoncĂ© â un match ne reste jamais rattachĂ© Ă un terrain qui n'existe plus.
Co-organisateurs : le crĂ©ateur peut ajouter des membres du club pour l'aider Ă piloter le tournoi (le crĂ©ateur ne peut pas ĂȘtre retirĂ©). Seuls le crĂ©ateur et un admin du club peuvent modifier cette liste : un co-organisateur ne peut ni s'en retirer ni en ajouter (contrainte portĂ©e par les rĂšgles Firestore, pas seulement par l'interface).
4. Gel de la configuration & verrouillage
Gel manuel Gestionnaire : un bouton « Figer la configuration » verrouille la structure (utile quand les horaires et adversaires ont été communiqués aux clubs). Un bouton « Défiger » permet de revenir en arriÚre tant qu'aucun score n'a été saisi.
Verrouillage automatique : dÚs la premiÚre saisie de score (ou changement de statut d'un match), la configuration est verrouillée définitivement.
Une fois verrouillée, la configuration structurelle est masquée ; seule reste la banniÚre d'information (et le bouton défiger si applicable).
La correction d'un score reste toujours possible , mĂȘme aprĂšs verrouillage.
La liste des arbitres reste ajustable Ă tout moment (voir §8), de mĂȘme que le renommage d'une Ă©quipe (§5) et le terrain/arbitre par match (§7).
5. Ăquipes participantes
Bloc repliable . Tous voient la liste ; Gestionnaire pour l'édition.
Ajout par nom libre (Ă©quipes externes possibles), avec logo optionnel et club d'origine optionnel (ex. « ASSE ») â utile quand plusieurs Ă©quipes d'un mĂȘme club participent.
Lier une équipe interne du club : récupÚre automatiquement le nom et le logo.
Doublon interdit : deux Ă©quipes ne peuvent pas porter le mĂȘme nom (insensible Ă la casse).
Renommage : possible Ă tout moment , mĂȘme une fois le tournoi commencĂ©.
Suppression : possible uniquement avant le démarrage (bloquée une fois le tournoi lancé).
6. Poules
Choix du nombre de poules (1 Ă 6).
RĂ©partition automatique Ă©quilibrĂ©e (bouton) : les Ă©quipes sont distribuĂ©es entre les poules (A, B, CâŠ).
Ajustement manuel : un sélecteur par équipe permet de changer sa poule.
Zone « Non réparties » pour les équipes sans poule.
La répartition est verrouillée dÚs le tournoi figé/commencé.
7. Calendrier & planification multi-terrains
Gestionnaire . Le bouton « Générer le calendrier » produit en une fois les matchs de poule et le bracket des phases finales (voir §11).
Algorithme des poules
Round-robin par la méthode du cercle : toutes les équipes d'une poule se rencontrent.
Planification par tours : dans un tour, chaque Ă©quipe ne joue qu'une fois â temps de repos garanti.
Multi-terrains : les matchs sont répartis sur les terrains disponibles ; le repos entre matchs est respecté.
Pause déjeuner appliquée par équipe (cf. §3.1).
La gĂ©nĂ©ration du calendrier crĂ©e aussi les matchs de finale (Ă vide) et les planifie aprĂšs les poules â on obtient l'heure d'atterrissage (fin estimĂ©e) du tournoi dĂšs le dĂ©part.
Les choix de génération sont mémorisés sur le tournoi (nombre de poules, taille du tableau, petite finale, consolante). Sans cela, rouvrir la page puis relancer la génération repartait des valeurs par défaut et changeait le tableau sous les pieds de l'organisateur.
8. Arbitres
Liste des arbitres : ajustable à tout moment (les arbitres arrivent souvent à la derniÚre minute), dans une carte dédiée.
Affectation dĂ©couplĂ©e : un bouton « Affecter les arbitres aux matchs » (sĂ©parĂ© de la gĂ©nĂ©ration du calendrier) attribue au mieux un arbitre Ă chaque match Ă venir , en Ă©vitant qu'un arbitre soit sur deux matchs en mĂȘme temps et en rĂ©partissant la charge.
Ajustement manuel par match : le terrain et l'arbitre d'un match restent modifiables tant que le match n'a pas commencé (§7 / §9).
9. Saisie des scores
Gestionnaire , directement sur chaque match (dépliage).
Steppers +/â pour chaque score, pensĂ©s pour une saisie mobile sur le terrain.
Statut du match : à venir / En cours / Terminé.
Terrain & arbitre modifiables tant que le match est « à venir ».
Match nul (élimination directe, ou poule en barÚme 3-2-1-0) : un sélecteur permet de désigner le vainqueur aux tirs au but .
SĂ©curitĂ© : impossible de saisir un score tant que les deux Ă©quipes ne sont pas dĂ©terminĂ©es (match prĂ©cĂ©dent du bracket non terminĂ©) â affichage « En attente des Ă©quipes qualifiĂ©es ».
0-0 pris en compte : en passant un match en cours / terminé, les scores non touchés sont enregistrés à 0.
La correction d'un score reste toujours possible.
9.1 Forfait / abandon
Gestionnaire Sur un match, désigner l'équipe forfait : le match passe à « Terminé », l'adversaire est déclaré vainqueur et le score est posé automatiquement.
Score de forfait configurable (défaut 3 -0) : c'est le score attribué au vainqueur, réglable dans la configuration du tournoi.
Une confirmation nomme l'équipe déclarée forfait et le score qui sera enregistré, avant d'écrire.
Le match porte ensuite un badge « forfait » dans l'application, et la mention [FORFAIT] sur l'export PDF (§14).
Le résultat alimente les classements et la propagation du bracket comme un match normal.
10. Classements de poule
Calculés en direct sur les matchs terminés.
Colonnes : rang, équipe, joués (J), différence de buts (Diff), points (Pts). 1er mis en avant.
Points selon le barÚme choisi (dont victoire/défaite aux tirs au but en 3-2-1-0).
Départage selon la configuration choisie (UEFA / FIFA / Express), incluant la confrontation directe.
11. Phases finales
Le format se choisit dans la section Calendrier ; le bracket est gĂ©nĂ©rĂ© dĂšs la gĂ©nĂ©ration du calendrier , Ă vide (places « 1er poule A », « 2e poule B »âŠ), puis alimentĂ© automatiquement dĂšs qu'une poule est entiĂšrement terminĂ©e. Ensuite, les vainqueurs (et perdants pour les petites finales) se propagent automatiquement de tour en tour.
Format Principe
Classique â 2 premiers/poule Demi-finales croisĂ©es (1er A vs 2e B, 1er B vs 2e A) â petite finale (3e place) + finale. Option Consolante : 3es /4es jouent les places 5 Ă 8.
Tableau intĂ©gral (1-8) Quarts croisĂ©s puis tableau haut (1-4) et tableau bas (5-8) â classement complet de la 1re Ă la 8e place.
Finale directe Matchs de classement par rang : 1er A vs 1er B (finale), 2es (3e place), 3es (5e place), 4es (7e place).
2e phase de poules Poule Haute (1ers + 2es ) et Poule Basse (3es + 4es ) : mini-championnats avec leurs propres classements.
Ălimination directe (gĂ©nĂ©rique) Tableau par taille : Finale (2) / Demies (4) / Quarts (8) / 16es (16) , + petite finale optionnelle. Repli toujours disponible, y compris hors structure « 2 poules ». Les tailles proposĂ©es s'adaptent au nombre d'Ă©quipes engagĂ©es.
Les quatre premiers formats sont proposĂ©s pour une structure Ă 2 poules (leur conception d'origine, cas courant des tournois de jeunes) ; pour toute autre structure, l'Ă©limination directe gĂ©nĂ©rique est proposĂ©e. Un vainqueur de finale nul se dĂ©partage aux tirs au but (vainqueur dĂ©signĂ©). Le đ champion est affichĂ© en fin de tournoi.
12. Retard / décalage dynamique
Champ « Retard (min) » + bouton « DĂ©caler les matchs Ă venir » , utilisable mĂȘme tournoi lancĂ© .
Décale l'horaire de tous les matchs non commencés ; les matchs déjà joués/en cours gardent leur heure réelle.
13. Page publique spectateurs
Lien partageable (bouton « Partager le lien spectateurs » : partage natif / copie du lien).
Accessible sans authentification , en lecture seule et en direct .
Affiche : en-tĂȘte du tournoi, đ vainqueur, classements de poule, phases finales et calendrier / rĂ©sultats (avec terrain, heure et arbitre).
Reste accessible jusqu'Ă l'expiration du tournoi (1 an), sans fenĂȘtre de partage limitĂ©e dans le temps â contrairement Ă la page live d'un match, fermĂ©e aux visiteurs 7 jours aprĂšs la rencontre.
Le calendrier public nomme les arbitres . Ce sont des personnes, sur une page sans authentification et non exclue des moteurs de recherche : Ă trancher si le tournoi accueille des arbitres mineurs ou si les noms n'ont pas Ă ĂȘtre diffusĂ©s (masquer l'arbitre sur la page publique, ou aligner la page sur la fenĂȘtre de 7 jours de la page live).
14. Export PDF
Gestionnaire Un bouton produit le dossier du tournoi en PDF, à imprimer ou à diffuser aux clubs invités. Le document est généré dans l'application (bibliothÚque pdf-lib, chargée à la demande) : aucun service externe, aucune donnée envoyée ailleurs.
Ăquipes participantes , avec leur poule.
Calendrier des matchs : heure, terrain, arbitre, phase (badge Poule / Phase finale), score si saisi, et la mention [FORFAIT] le cas échéant.
Classement général final .
Pied de page horodaté (« Généré le ⊠avec Krampon »).
15. ModÚle de données & sécurité
Collections Firestore
tournaments/{id} : clubId, name, date, location, format, status, settings (barĂšme, dĂ©partages, terrains, arbitres, durĂ©es, pause, options finalesâŠ), createdBy, organizerIds[], publicShareId, locked, createdAt, expireDate.
tournaments/{id}/entries/{id} : équipe participante (name, logoURL, internalTeamId, groupId = poule).
tournaments/{id}/matches/{id} : match (phase pool/quarter/semi/final/third, groupId, label, order, entryAId/entryBId, field, scheduledTime, refereeName, scoreA/scoreB, status, winnerEntryId, feedsFrom = alimentation par un autre match, seedFrom = alimentation par un classement de poule).
RĂšgles d'accĂšs
Lecture publique par identifiant du tournoi et de ses sous-collections (page spectateurs).
Liste rĂ©servĂ©e aux membres du club concernĂ© â et non Ă tout compte connectĂ© : la page club filtre par clubId, et la rĂšgle l'impose, ce qui interdit l'Ă©numĂ©ration des tournois d'un autre club.
Création : tout membre du club, à condition de se déclarer créateur et de figurer dans organizerIds.
Ăcriture rĂ©servĂ©e au crĂ©ateur, aux co-organisateurs et aux admins du club. Le clubId et le createdBy d'un tournoi ne peuvent pas ĂȘtre réécrits, et la liste des organisateurs n'est modifiable que par le crĂ©ateur ou un admin du club.
Suppression automatique aprÚs expireDate via une fonction planifiée quotidienne : le tournoi, ses sous-collections, et les événements de planning créés pour les équipes internes engagées (sinon ils restaient dans l'agenda en pointant un tournoi disparu).
16. Limites connues & évolutions possibles
La planification des phases finales est une estimation : au moment de la génération, les équipes des finales sont encore des places de poule (« placeholders »). Pour la « 2e phase de poules », l'ordre des mini-poules est approximatif.
Départages fair-play et tirage au sort non automatisés (les matchs de tournoi ne collectent pas les cartons, cf. §3.3).
La page spectateurs affiche le nom des arbitres et reste accessible sans authentification jusqu'Ă l'expiration du tournoi (1 an). Ă l'inverse de la page live d'un match, elle n'a pas de fenĂȘtre de partage limitĂ©e dans le temps ni d'exclusion des moteurs de recherche â point ouvert.
Pistes V2 : affichage « live » plein écran (TV / buvette), notification « prochain match » aux équipes, feuilles de match individuelles à imprimer, statistiques (buteurs).
Deux éléments listés comme « pistes V2 » dans une version antérieure de ce document sont livrés : l'export PDF (§14) et les tableaux à 16 en élimination directe (Finale / Demies / Quarts / 16es ).
â Retour au guide d'utilisation
Krampon â Document de rĂ©fĂ©rence fonctionnel de la gestion des tournois. Les sections 15 et 16 (modĂšle de donnĂ©es, limites) s'adressent Ă l'Ă©quipe projet.