🍓 Tournoi des Fraises 2026

Application web de gestion de tournoi de handball jeunes — classements en temps réel, planning des terrains, gestion des finales et buvette.

Cette application permet de gérer l'intégralité d'un tournoi de handball jeunes : inscription des équipes, génération des poules, saisie des scores, gestion du planning par terrain, phase finale, classement général et buvette.

Toutes les données sont synchronisées en temps réel via Firebase : chaque modification effectuée par l'admin est immédiatement visible sur tous les écrans connectés (téléphones des spectateurs, écran d'affichage, etc.).

Accès & interfaces

L'application s'ouvre directement dans un navigateur. Elle détecte automatiquement l'écran et affiche l'interface adaptée.

📱

Interface mobile

Écrans < 768 px. Navigation en bas de l'écran. Optimisée pour les spectateurs et arbitres sur téléphone.

🖥

Interface desktop

Écrans > 768 px. Navigation horizontale en haut. Inclut l'onglet Admin pour les organisateurs.

Partage : L'URL de l'application peut être partagée via le QR Code disponible dans l'onglet Admin. Tous les appareils connectés voient les mêmes données en temps réel.

Catégories

L'application gère plusieurs catégories d'âge et de genre simultanément. Chaque combinaison a ses propres équipes, matchs et classements.

CatégorieGenreSélection
U9Garçons FillesSélecteur en haut de l'écran
U11
U13(défaut)
U15
U17

Le sélecteur de catégorie filtre automatiquement tous les onglets (poules, matchs, classement…). Sur desktop, un menu déroulant choisit l'âge et des boutons bascule choisissent le genre.

📊 Poules

Les poules affichent le classement en temps réel de chaque groupe d'équipes.

Affichage

  • Poule A (rouge) et Poule B (violet) côte à côte.
  • Chaque ligne affiche : rang, nom de l'équipe, points.
  • Si la catégorie compte moins de 8 équipes, une seule Poule A est affichée (sur toute la largeur).
  • Le classement est recalculé automatiquement à chaque score saisi.

Règle de classement

RésultatPoints
Victoire3 pts
Match nul1 pt
Défaite0 pt

En cas d'égalité de points, le départage s'effectue par différence de buts, puis par buts marqués.

⚽ Matchs

L'onglet Matchs liste tous les rencontres de la catégorie sélectionnée.

Informations affichées

  • Nom du groupe (ex. : U13 Garçons — Poule A)
  • Équipe A vs Équipe B
  • Score actuel (ou si non joué)
  • Heure du match (si renseignée)
  • Numéro de terrain (si assigné)

Saisie des scores

En mode normal (sans admin) : les scores sont affichés en lecture seule. En mode admin, chaque carte de match dispose de deux champs de saisie et d'un bouton OK. La validation met à jour le classement instantanément.

📋 Planning

Le planning regroupe tous les matchs de toutes les catégories par terrain, puis par heure.

Structure d'affichage

  • Un bloc par terrain utilisé (ex. : Terrain 2 — 5 matchs).
  • Dans chaque bloc : les matchs triés par heure, avec équipes, badge de catégorie et score.
  • Les matchs sans heure apparaissent dans une section Sans horaire.
Répartition par terrain : Les terrains sont assignés automatiquement selon la catégorie. Garçons sur T1–T3, filles sur T4–T6 (avec 6 terrains). Une même catégorie joue toujours sur le même terrain.

🥇 Finales

La phase finale s'active automatiquement une fois que tous les scores de poule sont saisis.

Arbre des matchs

MatchÉquipes
½ Finale 11er Poule A vs 2e Poule B
½ Finale 21er Poule B vs 2e Poule A
🥉 Petite finalePerdants des ½ finales
🥇 Grande FinaleVainqueurs des ½ finales

Le nom du vainqueur apparaît en doré une fois le score saisi. Le tableau des finales est géré depuis le panneau Admin.

🏆 Classement

Le classement général affiche toutes les équipes de la catégorie triées par points, toutes poules confondues.

  • Rang 🥇 / 🥈 / 🥉 mis en valeur pour les 3 premières places.
  • Points en rouge.
  • Mis à jour en temps réel à chaque score.

🍔 Buvette

L'onglet Buvette affiche la carte des produits disponibles au stand de restauration.

Filtres disponibles

Tout 🥤 Boissons 🥪 Salé 🍦 Sucré ☕ Chaud

Chaque article affiche : emoji, nom, description et prix. Le menu est entièrement personnalisable depuis l'admin.

⚙️ Manuel Admin — Accès

L'onglet Admin est exclusif à l'interface desktop (écran large). Il est protégé par un mot de passe.

  1. Cliquer sur ⚙️ Admin dans la barre de navigation (à droite, en violet).
  2. Saisir le mot de passe dans la fenêtre modale qui s'ouvre.
  3. Valider : le panneau admin s'affiche avec tous ses sous-onglets.
Le mot de passe est vérifié localement par hachage SHA-256. Il n'est pas transmis au serveur.

Sous-onglets du panneau admin

OngletRôle
MatchsSaisie des scores et configuration des matchs (terrain, heure, durée)
ÉquipesAjout / suppression d'équipes, génération des poules
BuvetteÉdition du menu de la buvette
SponsorsGestion des logos partenaires (5 emplacements)
ConfigNom du tournoi, logo, nombre de terrains, durées
ImpressionImpression du planning par terrain
MessageDiffusion d'un message en temps réel sur tous les écrans
QR CodeAffichage et téléchargement du QR Code de partage

👥 Équipes & Poules

Important : Sélectionner la bonne catégorie (âge + genre) avant d'ajouter des équipes ou de générer les poules.

Ajouter une équipe

  1. Saisir le nom de l'équipe dans le champ texte.
  2. Cliquer sur Ajouter ou appuyer sur Entrée.
  3. L'équipe apparaît dans la liste avec un bouton de suppression.

Supprimer une équipe

Cliquer sur le bouton à côté du nom de l'équipe.

Générer les poules

  1. Ajouter au moins 2 équipes dans la catégorie.
  2. Cliquer sur 🎲 Générer les Poules.
  3. Les équipes sont réparties aléatoirement : une seule Poule A si moins de 8 équipes, Poule A + Poule B si 8 équipes ou plus.
  4. Les terrains sont assignés automatiquement selon la catégorie (voir section Terrains).
Générer les poules efface tous les matchs et scores existants pour cette catégorie. À utiliser avant le début du tournoi uniquement.

Recalculer les terrains

Le bouton 📍 Recalculer les terrains (toutes catégories) réassigne les terrains sur tous les matchs existants de toutes les catégories, selon la règle genre/âge, sans effacer les scores.

🗓 Gestion des matchs

Saisir un score

  1. Dans le sous-onglet Matchs, localiser le match concerné.
  2. Saisir le score de l'équipe A dans le premier champ, celui de l'équipe B dans le second.
  3. Cliquer sur OK pour valider. Le classement se met à jour immédiatement.

Configurer un match (terrain, heure, durée)

  1. Cliquer sur le bouton ✏️ du match à configurer.
  2. La fenêtre modale s'ouvre avec les options suivantes :
ChampDescription
TerrainCliquer sur une tuile numérotée (T1 à Tn). La tuile sélectionnée s'affiche en rouge.
HeureBoutons / + par pas de 5 minutes. Plage : 08h00 – 20h00.
DuréeDurée du match en minutes (10 à 120 min, pas de 5 min).
  1. Cliquer sur 💾 Enregistrer pour sauvegarder.
  2. Ou 🗑 Effacer horaire & terrain pour réinitialiser la configuration du match.

⚙️ Configuration générale

Nom du tournoi

Modifier le nom affiché dans l'en-tête (par défaut : Tournoi des Fraises 2026). Valider avec Enregistrer.

Logo du club

Cliquer sur la zone logo pour téléverser une image. Ce logo apparaît dans l'en-tête et sur les impressions.

Durées des matchs

Chaque type de match a une durée configurable indépendamment :

PhaseDurée par défaut
Matchs de poule20 min
Demi-finales25 min
Petite finale25 min
Grande finale30 min
Temps entre matchs5 min

Le bouton ⚡ Appliquer à tous les matchs met à jour la durée de tous les matchs existants selon la phase correspondante.

🏟 Terrains

Nombre de terrains

Les boutons / + ajustent le nombre de terrains disponibles (1 à 20). Modifier ce nombre réassigne automatiquement tous les matchs dont le terrain dépasse le nouveau maximum.

Répartition automatique par catégorie

Lors de la génération des poules, chaque catégorie reçoit un terrain fixe selon cette règle :

T1
T2
T3
T4
T5
T6

Garçons (T1–T3)   Filles (T4–T6) — exemple avec 6 terrains

CatégorieGarçonsFilles
U9T1T4
U11T2T5
U13T3T6
U15T1 partagéT4 partagé
U17T2 partagéT5 partagé
Pour corriger les terrains de l'ensemble du tournoi sans regénérer les matchs, utiliser le bouton 📍 Recalculer les terrains (toutes catégories) dans l'onglet Équipes.

🥇 Finales (admin)

La phase finale se génère automatiquement une fois tous les scores de poule saisis. Les équipes qualifiées sont déduites du classement final de chaque poule.

Saisir les scores des finales

  1. Aller dans le sous-onglet Matchs de l'admin.
  2. Les matchs de phase finale (½ finales, petite finale, grande finale) apparaissent automatiquement après les matchs de poule.
  3. Saisir les scores de la même façon que pour les matchs de poule.
Les ½ finales doivent être jouées avant que les équipes de la grande finale et de la petite finale soient connues. L'application les calcule automatiquement.

📢 Messagerie temps réel

La messagerie permet d'envoyer un message visible sur tous les écrans connectés (spectateurs compris) sous forme de bandeau en haut de l'application.

Envoyer un message

  1. Aller dans le sous-onglet Message.
  2. Choisir le type : ℹ️ Info ⚠️ Avertissement 🚨 Alerte ✅ Succès
  3. Saisir le texte dans la zone de message.
  4. Cliquer sur 📡 Diffuser.

Effacer le message

Cliquer sur 🗑 Effacer ou sur le du bandeau sur n'importe quel écran.

Exemples d'utilisation : « Terrain 3 hors service jusqu'à 11h », « Remise des prix à 17h au podium », « Finale U13 dans 10 minutes sur T3 ».

🍔 Buvette (admin)

Le menu de la buvette est entièrement personnalisable. Les modifications sont visibles instantanément dans l'onglet Buvette.

Modifier un article existant

Dans le sous-onglet Buvette de l'admin, chaque ligne du tableau peut être éditée directement : emoji, nom, catégorie, description et prix.

Ajouter un article

Cliquer sur ➕ Ajouter un article en bas du tableau. Une nouvelle ligne vierge apparaît à remplir.

Supprimer un article

Cliquer sur le bouton à droite de la ligne concernée.

Catégories disponibles

boisson snack sucre chaud

🤝 Sponsors

5 emplacements de logos partenaires sont disponibles. Les logos s'affichent dans une barre défilante en haut de l'application (mobile et desktop).

Ajouter un logo

  1. Aller dans le sous-onglet Sponsors.
  2. Cliquer sur un emplacement vide (zone pointillée).
  3. Sélectionner un fichier image (PNG, JPG, SVG recommandé).

Supprimer un logo

Cliquer sur le bouton au-dessus du logo.

📱 QR Code

Le QR Code permet de partager facilement l'URL de l'application avec les spectateurs et les arbitres.

ActionDescription
AfficherLe QR Code est généré automatiquement à l'ouverture de l'onglet.
📋 Copier l'URLCopie le lien dans le presse-papier.
⬇️ Télécharger PNGEnregistre le QR Code en image PNG haute résolution.
Imprimer le QR Code et l'afficher à l'entrée du tournoi permet aux spectateurs d'accéder aux classements en temps réel sur leur téléphone.

🖨️ Impression

Le module d'impression génère une feuille de planning triée par terrain, utilisable comme document de référence pour les arbitres ou le staff.

Procédure

  1. Aller dans le sous-onglet Impression.
  2. Sélectionner les terrains à inclure (cases à cocher).
  3. Cocher ou décocher l'option Afficher le logo.
  4. Cliquer sur 🖨️ Lancer l'impression.

Règles de calcul

Points

RésultatPoints attribués
Victoire3 pts
Match nul1 pt
Défaite0 pt

Critères de départage (ordre de priorité)

  1. Points totaux
  2. Différence de buts (buts marqués − buts encaissés)
  3. Nombre de buts marqués

Qualification pour les finales

  • 1er de Poule A affronte le 2e de Poule B en ½ Finale 1.
  • 1er de Poule B affronte le 2e de Poule A en ½ Finale 2.
  • Les perdants jouent la petite finale (3e place), les vainqueurs la grande finale.

Synchronisation Firebase

Toutes les données sont stockées dans Firebase Realtime Database et synchronisées en temps réel entre tous les appareils connectés.

Ce qui est synchronisé

DonnéeChemin Firebase
Équipes, matchs, poules, finalestournoi/state
Message diffusétournoi/message
Logos sponsorstournoi/sponsors

Indicateur de connexion

Un indicateur en haut à droite de l'interface desktop signale l'état de la connexion :

  • 🟢 Synchronisé — données à jour.
  • 🟡 Connexion… — en cours de connexion.
  • 🔴 Hors ligne — pas de connexion, données locales uniquement.
En mode hors ligne, les modifications restent en mémoire mais ne sont pas propagées aux autres appareils. Elles seront envoyées automatiquement à la reconnexion.