[HN Gopher] Show HN: Bracket - selfhosted tournament system
___________________________________________________________________
Show HN: Bracket - selfhosted tournament system
Over the last two years, I developed a tournament system called
Bracket. Most (if not all) tournament systems available online are
paid and ask tons of money (a typical minimum subscription costs 50
euros per month, and go up to 500 euros per month or so), which is
not feasible for many small sport clubs/individuals. So I developed
my own system and put it publicly on GitHub. AFAIK this is the only
open source tournament system available that has a significant
amount of features. I made this tournament system for my badminton
club and hosted six paid tournaments successfully. It features
flexible setups, where a tournament can have multiple stages and
each stage can have multiple "items" (round robin, single
elimination or swiss). Backend is written in async Python with
FastAPI and frontend in Next.js with the great Mantine library. I
would appreciate some feedback! GitHub:
https://github.com/evroon/bracket Demo:
https://www.bracketapp.nl/demo Docs: https://docs.bracketapp.nl
Author : tripleseven
Score : 117 points
Date : 2025-05-05 14:20 UTC (8 hours ago)
(HTM) web link (github.com)
(TXT) w3m dump (github.com)
| wavemode wrote:
| I play in a lot of tournaments (cornhole, mostly). It's not clear
| to me from the demo - does this support players signing
| themselves up? Or do they have to show up in person and the
| tournament director signs them up?
|
| Online self-signups are really nice because they let players know
| how many have already signed up - if you're debating whether to
| drive across town to play, it's nice to know you're not going to
| get there and it turns out only 4 people showed up. It's also
| nice for tournament directors for the same reason, as you get a
| sense in advance for how many people to expect.
|
| I'm also curious whether you've considered integrating this with
| Twilio or something similar, to send text messages. A big
| annoyance in running any tournament is making sure people get
| notified when their next match is up. Casual tournaments are
| often run in venues where people who are waiting for their next
| game tend to wander away to get food or a drink, or have a smoke.
|
| The other big thing that strikes me about the demo is, how manual
| it all seems to be. Unless I'm just missing it, there doesn't
| seem to be a way to arbitrarily randomize teams and/or randomize
| a bracket of all entrants, you have to go through and assign team
| by team. I would definitely add lots of automation/randomization
| features, if there aren't any, as it's a big time saver for
| tournament directors.
| tripleseven wrote:
| Thanks for your reply!
|
| > does this support players signing themselves up? Or do they
| have to show up in person and the tournament director signs
| them up?
|
| Ah this isn't implemented yet as I haven't really come up with
| this idea yet, but it would be great to have this feature so I
| created an issue for it :)
| https://github.com/evroon/bracket/issues/1200. Feel free to
| leave more feedback there as well.
|
| > I'm also curious whether you've considered integrating this
| with Twilio or something similar, to send text messages
|
| Interesting idea as well! I haven't implemented any kind of
| notifications so far yet either. But it seems very useful, also
| from my experience with hosting these kind of tournaments. I'll
| think about what the best way to implement this is that would
| be easy (and free/cheap) to selfhost. Maybe it can be done
| using javascript serviceworkers that just send web
| notifications. That would be free. AFAIK text messages would
| always cost money to send.
| mathgeek wrote:
| Based on using the various solutions in this space as a
| player, text messages and mobile notifications are the norm
| (folks that don't install the app will still need sms or
| similar).
| mrngm wrote:
| Little nit on the Github README: the logo on the top seems
| cropped (frontend/public/favicon-wide.svg), the letter "e" is
| partly visible, and the "t" isn't visible.
| tripleseven wrote:
| Ah I tested it but haven't noticed this on firefox or chromium-
| based browsers on desktop and mobile. Could you tell me which
| browser you use (and wether it's on mobile or desktop) so i can
| reproduce the issue?
| Kudos wrote:
| Firefox on Linux here. I presume it's because I don't have
| Lato installed so it's falling back to another font.
| tripleseven wrote:
| Ah thanks, that explains, didn't think about that. I'll
| look into fixing the SVG or replacing it by an image if
| that doesn't work.
| mrngm wrote:
| Firefox 136 on Linux, desktop; and as a sibling commentor
| suggests, it could be font issue, interesting! Firefox uses
| Noto Serif here, I don't have Lato installed.
| albumen wrote:
| This is a great idea, thank you for building it!
|
| My wife organises a lot of double elimination tournaments; could
| you add that as an option?
|
| Also, it would be cool to see the live demo tournament populated
| with matches, so you'd get an idea straight away of the
| experience without needing to create stages etc (but also keep
| the ability to set up a new tournament).
|
| Lastly re notifications that wavemode suggested; perhaps you let
| people pay for SMS notifications themselves, as an option beyond
| web notifications. This page [1] implies that web push
| notifications are unreliable, on iOS and android.
|
| [1] https://stackoverflow.com/questions/79215345/reliability-
| of-...
| tripleseven wrote:
| Thanks!
|
| > My wife organises a lot of double elimination tournaments;
| could you add that as an option?
|
| Yes there's an open issue about that, I do plan to implement
| that, hopefully rather soon.
|
| > Also, it would be cool to see the live demo tournament
| populated with matches
|
| Ah that makes sense. I didn't want to set up everything already
| because it might not be the way you want it to be and would
| unnecessarily put load on my server. But a few teams+matches
| should be doable indeed, good idea!
|
| > Lastly re notifications that wavemode suggested; perhaps you
| let people pay for SMS notifications themselves, as an option
| beyond web notifications. This page [1] implies that web push
| notifications are unreliable,
|
| Ah that's unfortunate. I will look a bit more into Twilio then,
| thanks for raising that!
| chrisdhal wrote:
| If it's self hosted, you shouldn't care if it costs money.
| Let the person/org decide if they want to use it, just
| provide an interface for it. There are tons of free, self
| hosted apps that have tons of notification methods available.
| Radarr alone has 26 methods for notifications, none enabled
| by default. They include generic webhook, "custom script",
| and then there a number of specific ones where you put in the
| URL, API key, etc. and as the person hosting it things would
| go against my API count/bill. There's no need for you to be
| specific about Twilio, just have a notification framework
| with Twilio being one of the providers.
| p2hari wrote:
| I tested the app and it was working well and really admire all
| the work.
|
| You say that you have been using to host badminton tournaments.
| However, I see that I can add only one score to the match
| (21-12). I mean there is no set system. ( 21-12, 12-21,21-12).
|
| Am I right in that assumption, looks like there is one github
| issue also on that. Could you let me know if my understanding is
| right? I have an upcoming tournament and can test it out if that
| exists.
| tripleseven wrote:
| Thanks!
|
| Ah yes we didn't use best-out-of-three for those tournaments,
| just one set per match. So I indeed haven't implemented sets
| yet, but I do plan to implement that.
| stalco wrote:
| Nice frontend!
|
| Here's a CLI implementation https://github.com/cristiean/bracket
| libraryatnight wrote:
| Very clean and responsive - thanks much for sharing!
| tripleseven wrote:
| Thanks!
| arjunrko wrote:
| Great idea, would use it for local pick-up soccer games. Would
| actually use it for FIFA nights and poker games as well. It would
| be cool if you can add an aggregated stats and leaderboard page.
| Keep going back for glory.
| tripleseven wrote:
| Thanks! Yes I indeed plan to track player scores on a
| "club"-level, so aggregated over multiple tournaments.
| abdullahkhalids wrote:
| How easy is it for a high schooler to actually install and run
| this software for their club? I imagine a teenager who can
| competently handle a discord server, including setting up bots.
| But doesn't know much about computers beyond that.
| tripleseven wrote:
| Hmm it's quite a bit more complicated than that. You need to be
| able to run Docker containers (that's the easiest way to run
| this). There's countless ways to do that nowadays, and internet
| is full of tutorials. Portainer seems easy to use to solve this
| problem but I've never tried it. There's a lot of cloud
| providers that offer running Docker containers though.
| abdullahkhalids wrote:
| I understand. The specific critique is: make a product that
| potential users can actually use.
| tripleseven wrote:
| I understand your point and I definitely agree that
| products should be as easy to use and set up as possible.
| However, I don't really see a way to make this any easier
| than it is now, or easier to set up than any other
| selfhosted project you can find on github.
|
| I'm not targeting high school students (specifically) and
| it's outside the scope of the project to give a background
| course in DevOps.
|
| I would argue the software is definitely usable by anyone
| who has some basic experience with Linux and Docker.
|
| If you have specific ideas on how to make selfhosting this
| easier, I'm certainly curious.
| andrewchilds wrote:
| Aside from being open source, how is this different from Stadium
| (https://stadiumcompete.com)?
| tripleseven wrote:
| I havent seen that service before, but it's probably similar.
| Though they seem to let you still pay for certain features,
| which Bracket doesn't because all code I wrote is indeed
| public.
| lcnPylGDnU4H9OF wrote:
| That doesn't appear to have a self-hosting option, unless I'm
| just missing it.
| ta8645 wrote:
| For whatever it's worth, I tried setting up a quick Swiss chess
| tournament, and got a little confused about the stages. I think I
| may have set up two by mistake, at least, the "previous" button
| was visible when I was editing the stage I created.
|
| And it appears that Teams are required, even though for a chess
| tournament like mine, each player is just an individual, and
| there are no teams involved. So it didn't really feel like a good
| fit.
|
| None of this is meant as a criticism, just a data point.
___________________________________________________________________
(page generated 2025-05-05 23:00 UTC)