Skip to main content

Introduction

Bracket is a tournament system meant to be easy to use. Bracket is written in async Python (with FastAPI) and Next.js as frontend using the Mantine library.

Overview of features

It has the following features:

  • Supports single elimination, round-robin and swiss formats.
  • Build your tournament structure with multiple stages that can have multiple groups/brackets in them.
  • Drag-and-drop matches to different courts or reschedule them to another start time.
  • Various dashboard pages are available that can be presented to the public, customized with a logo.
  • Create/update teams, and add players to teams.
  • Create multiple clubs, with multiple tournaments per club.
  • Swiss tournaments can be handled dynamically, with automatic scheduling of matches.

Why does this exist?

There are plenty of tournament systems to be found online. So why does Bracket exist?

Firstly, there are no complete open-source tournament systems to be found on github. Let me know if you find one, I will list it here as alternative to Bracket. Furthermore, the closed-source tournament systems that can be found online are typically payware, and quite expensive.

Secondly, there is a lack of tournament systems that support Swiss tournaments. There are a few that exist, but they're typically quite ancient projects. Furthermore, AFAIK the Swiss tournament systems that exist usually only support Swiss, no other types of tournament elements (round-robin, elimination etc.). That is quite a limitation when you want to host a tournament that starts with Swiss and determines a winner based on a knockoff (elimination) stage.

Finally, I developed this project to learn more about Next.js and apply my Python (e.g. FastAPI) experience to a project with a real purpose.

Quickstart

To get started, follow the steps described in quickstart