https://github.com/evroon/bracket
Selfhosted tournament system
https://github.com/evroon/bracket
api bracket brackets docker docusaurus fastapi json mantine nextjs postgresql python react reactjs selfhosted sports tournament-bracket tournament-manager tournaments web yarn
Last synced: 5 months ago
JSON representation
Selfhosted tournament system
- Host: GitHub
- URL: https://github.com/evroon/bracket
- Owner: evroon
- License: agpl-3.0
- Created: 2022-12-09T09:56:31.000Z (almost 3 years ago)
- Default Branch: master
- Last Pushed: 2025-05-13T04:12:35.000Z (5 months ago)
- Last Synced: 2025-05-13T05:21:11.329Z (5 months ago)
- Topics: api, bracket, brackets, docker, docusaurus, fastapi, json, mantine, nextjs, postgresql, python, react, reactjs, selfhosted, sports, tournament-bracket, tournament-manager, tournaments, web, yarn
- Language: Python
- Homepage: https://docs.bracketapp.nl
- Size: 16 MB
- Stars: 1,100
- Watchers: 8
- Forks: 89
- Open Issues: 27
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Security: SECURITY.md
Awesome Lists containing this project
README
![]()
Demo
·
Documentation
·
Quickstart
·
GitHub
·
Releases
Tournament system meant to be easy to use. Bracket is written in async Python (with
[FastAPI](https://fastapi.tiangolo.com)) and [Next.js](https://nextjs.org/) as frontend using the
[Mantine](https://mantine.dev/) library.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.
# Live Demo
A demo is available for free at . The demo lasts for 30 minutes, after which
your data will de deleted.# Quickstart
To quickly run bracket to see how it works, clone it and run `docker compose up`:
```bash
git clone git@github.com:evroon/bracket.git
cd bracket
sudo docker compose up -d
```This will start the backend and frontend of Bracket, as well as a postgres instance. You should now
be able to view bracket at http://localhost:3000. You can log in with the following credentials:- Username: `test@example.org`
- Password: `aeGhoe1ahng2Aezai0Dei6Aih6dieHoo`.To insert dummy rows into the database, run:
```bash
sudo docker exec bracket-backend pipenv run ./cli.py create-dev-db
```See also the [quickstart docs](https://docs.bracketapp.nl/docs/running-bracket/quickstart).
# Usage
Read the [usage guide](https://docs.bracketapp.nl/docs/usage/guide) for how to organize a tournament in Bracket from start to finish.# Configuration
Read the [configuration docs](https://docs.bracketapp.nl/docs/running-bracket/configuration) for how to configure Bracket.Bracket's backend is configured using `.env` files (`prod.env` for production, `dev.env` for development etc.).
But you can also configure Bracket using environment variables directly, for example by specifying them in the `docker-compose.yml`.The frontend doesn't can be configured by environment variables as well, as well as `.env` files using Next.js' way of loading environment variables.
# Running Bracket in production
Read the [deployment docs](https://docs.bracketapp.nl/docs/deployment) for how to deploy Bracket and run it in production.Bracket can be run in Docker or by itself (using `pipenv` and `yarn`).
# Development setup
Read the [development docs](https://docs.bracketapp.nl/docs/community/development) for how to run Bracket for development.Prerequisites are `yarn`, `postgresql` and `pipenv` to run the frontend, database and backend.
# Translations
Based on your browser settings, your language should be automatically detected and loaded. For now,
there's no manual way of choosing a different language.## Supported Languages
To add/refine translations, [Crowdin](https://crowdin.com/project/bracket) is used.
See the [docs](https://docs.bracketapp.nl/docs/community/contributing/#translating) for more information.# More screenshots
![]()
# Help
If you're having trouble getting Bracket up and running, or have a question about usage or configuration, feel free to ask.
The best place to do this is by creating a [Discussion](https://github.com/evroon/bracket/discussions).# Supporting Bracket
If you're using Bracket and would like to help support its development, that would be greatly appreciated!Several areas that we need a bit of help with at the moment are:
- ⭐ **Star Bracket** on GitHub
- 🌐 **Translating**: Help make Bracket available to non-native English speakers by adding your language (via [crowdin](https://crowdin.com/project/bracket))
- 📣 **Spread the word** by sharing Bracket to help new users discover it
- 🖥️ **Submit a PR** to add a new feature, fix a bug, extend/update the docs or something elseSee the [contribution docs](https://docs.bracketapp.nl/docs/community/contributing) for more information on how to contribute
# Contributors
![]()
Erik Vroon
![]()
Null
![]()
BachErik
![]()
Danny Piper
![]()
SevicheCC
![]()
Nicolas Vanheuverzwijn
# License
Bracket is licensed under [AGPL-v3.0](https://choosealicense.com/licenses/agpl-3.0/).Please note that any contributions also fall under this license.
See [LICENSE](LICENSE)