bracketeer is your sidekick for generating and managing tournaments for your social evenings. Whether you're organising a beer pong or foosball tournament, bracketeer ensures that it is well-structured and enjoyable.
- Tournament Generation: Quickly create brackets for any type of game.
- Team Management: Easily add, remove, and organise teams.
- Sharing & Tracking: Keep track of scores and progress in real-time.
- Sets and Phases: Easily test different tournament formats with support for sets and multiple phases.
Tournaments are stored locally in your browser. Please note that on WebKit-based browsers (e.g. Safari or iOS in general), local storage is cleared after seven days of inactivity, meaning your tournament will be lost if you don't access it within that time frame.
You can also share your tournament with others, specifically the match plan and scores.
You can share your tournament state with others through GitHub Gists. The host device does not need to be online for others to access the tournament, since the tournament state is stored in the Gist. However, please note that Gists are cached by clients for 5 minutes, meaning that changes made to the tournament may not be immediately visible to others. In order to share a tournament via a Gist, you will need to enter a GitHub personal access token.
Peer-to-peer sharing (powered by PeerJS) allows you to share your tournament state with others in real time. This means that changes made to the tournament are immediately visible to all participants. The host device must be online and connected to the internet for this to work. No login is required. P2P sharing is offered in three modes:
- Permanent: The link is valid whenever the host device is online. This means you can safely share the link in advance.
- Session: The link changes whenever the host device reopens the browser.
- Random: The link changes whenever the host device reloads or reopens the browser.
It is recommended to use Gists and P2P sharing together. Use the Gist share link to share the tournament with participants. bracketeer automatically switches to P2P sharing when available.
You can use bracketeer online here. This version is hosted via Cloudflare Pages.
You can also self-host bracketeer using a reverse proxy such as Caddy or Nginx. The application works client-side and offline.
Contributions are always welcome. If you are planning to use AI, please bear the following guidelines in mind:
- Vibe-coding is strongly discouraged.
- AI-assisted coding is allowed, but manual human review is required for all contributions (see #43).
- Tests can be generated with AI (as was done for the initial coverage, see 188c3af, df7e37f, 095cf67), but they must also be manually reviewed.
Clone the repository:
git clone https://github.com/davidohnee/bracketeer.git
cd bracketeerInstall dependencies:
npm iRun bracketeer
npm run devOpen your browser and navigate to http://localhost:5173 to access the application.
This project uses Vitest for unit testing. To run tests:
# Run tests in watch mode
npm test
# Run tests once
npm run test:run
# Run tests with UI
npm run test:ui
# Run tests with coverage
npm run test:coverage# Type check
npm run type-check
# Lint code
npm run lintThis project is licensed under the GPL-3.0 License. See the LICENSE file for details.
For questions or feedback, please create an issue.
