bracket logo

bracket

Selfhosted tournament system

buildbracketrelease
Website GitHub

What is it?

What it is

A tournament management platform supporting single elimination, round-robin, and Swiss formats with drag-and-drop scheduling, team management, and customizable dashboards.

Why it exists

To provide an easy-to-use, self-hosted solution for organizing and managing sports tournaments with flexible structures and dynamic scheduling.

Who should use it

Sports organizers, clubs, schools, and developers seeking a self-hosted, extensible tournament management system with support for multiple formats and customization.

Who should avoid it

Users looking for a purely SaaS solution, those unwilling to manage Docker or self-hosted services, or projects requiring a permissive license (AGPL‑3.0 may be restrictive).

How it works

A quick walkthrough in plain English

How bracket handles a request

Step 1 of 4

Your app sends a request

A user action or another service calls the API.

Features

Single elimination, round-robin, and Swiss tournament formats
Multi-stage tournament builder with multiple groups/brackets per stage
Drag-and-drop match rescheduling and court assignment
Customizable public dashboard pages with logo support
Team and player management (create/update teams, add players)
Multi-club support with multiple tournaments per club
Dynamic Swiss tournament handling with automatic match scheduling
Docker-based quickstart (backend, frontend, PostgreSQL)
Internationalization via Crowdin with automatic language detection
Responsive UI built with Vite, React, and Mantine

Advantages

  • Free and open-source (AGPL-3.0)
  • Easy self-hosted deployment with Docker Compose
  • Intuitive drag-and-drop interface
  • Supports a variety of tournament formats
  • Flexible multi-stage and multi-club architecture
  • Automatic Swiss pairing reduces manual work
  • Customizable public dashboards for spectators
  • Active community and regular releases
  • Multilingual support via Crowdin
  • Comprehensive documentation and live demo

Disadvantages

  • AGPL-3.0 license may impose restrictions on proprietary use
  • Requires Docker and PostgreSQL for easiest setup
  • No manual language selection in UI (relies on browser settings)
  • Demo data is temporary (deleted after 30 minutes)
  • Development setup requires multiple tools (pnpm, uv, Node)
  • May be overkill for very simple single-match tournaments

Installation

compose

git clone git@github.com:evroon/bracket.git
cd bracket
sudo docker compose up -d

FAQ

How do I quickly run Bracket locally for testing?

Clone the repository and run `sudo docker compose up -d` from the project root. This starts the backend, frontend, and PostgreSQL containers. You can then access Bracket at http://localhost:3000 and log in with the demo credentials (username: test@example.org, password: aeGhoe1ahng2Aezai0Dei6Aih6dieHoo).

What tournament formats does Bracket support?

Bracket supports single elimination, round‑robin, and Swiss formats. You can build multi‑stage tournaments with multiple groups or brackets within each stage.

How can I populate the database with dummy data for development?

After the containers are running, execute `docker exec bracket-backend uv run --no-dev ./cli.py create-dev-db`. This inserts sample teams, players, clubs, and tournaments into the PostgreSQL database.

How do I configure Bracket for development or production?

Configuration is handled via environment variables. For the backend, use `.env` files such as `dev.env` or `prod.env`, or set variables directly in `docker-compose.yml`. The frontend uses Vite’s environment loading, so you can also set variables in `.env` files or via Docker environment variables.

Where can I find more information on using and deploying Bracket?

The official documentation is available at https://docs.bracketapp.nl. Key sections include the Quickstart guide, Usage guide, Configuration docs, and Deployment instructions.

How can I contribute translations to Bracket?

Bracket uses Crowdin for translations. Visit https://crowdin.com/project/bracket to add or refine translations. The docs also explain how to set up a local translation workflow.

Loading documentation…
View on GitHub

Featured in Videos

YouTube tutorials and walkthroughs for bracket

Alternatives

Similar projects ranked by category, topics, and text overlap.

Compare
bracket | MushyBook