Bracket

Bracket

C'EST QUOI ?

Bracket est un système de gestion de tournois à auto-héberger. Tu crées un club, un tournoi dedans, tu déclares les équipes et leurs joueurs, puis tu construis la structure : plusieurs étapes, chacune contenant un ou plusieurs groupes ou tableaux. Le backend est écrit en Python asynchrone avec FastAPI, le frontend en Vite et Mantine, avec PostgreSQL derrière.

POURQUOI C'EST INTÉRESSANT ?

  • Trois formats couverts : élimination directe, round-robin et suisse. Le suisse est géré dynamiquement : les matchs suivants sont planifiés automatiquement au fil des résultats.
  • Structure en étapes : un tournoi enchaîne plusieurs étapes, et chaque étape porte ses propres groupes ou tableaux. Une phase de poules suivie d'un tableau final se modélise directement, sans bricolage.
  • Planning au glisser-déposer : un match se déplace sur un autre terrain ou se recale à une autre heure de départ, sans passer par un formulaire.
  • Pages publiques : plusieurs vues dashboard sont prévues pour être projetées ou partagées aux participants, avec un logo au choix.
  • Multi-clubs : plusieurs clubs cohabitent sur la même instance, avec plusieurs tournois par club.
  • Démarrage en une commande : docker compose up -d monte le backend, le frontend et PostgreSQL, avec des identifiants de test fournis dans le README. Un create-dev-db remplit ensuite la base de données de démonstration.

CAS D'USAGE

  • Organiser un tournoi de club sur un week-end, avec plusieurs terrains à faire tourner.
  • Enchaîner une phase de poules et un tableau à élimination directe dans le même tournoi.
  • Afficher les résultats en direct sur un écran à l'entrée de la salle.
  • Faire tourner un tournoi au système suisse sans recalculer les appariements à la main.
  • Héberger les tournois de plusieurs clubs sur une seule instance.

La langue de l'interface est détectée depuis les réglages du navigateur, et il n'existe pas encore de sélecteur manuel ; les traductions passent par Crowdin. Une démo publique tourne sur bracketapp.nl/demo, avec les données effacées au bout de trente minutes.