Update - I shutdown and open sourced Ultimate Tournament in 2020. I learned a lot from working on this project but it was time to move on. If you’d like to read more about my final thoughts or check out the code it is available at kevinhughes27/ultimate-tournament
For the past while I’ve been working on an ambitious side project - building a complete Software as a Service (SaaS) for creating and managing Ultimate Frisbee tournaments. I started the project leading a team at a charity hackathon and have since continued working on it all on my own. This project has pushed me to learn many new things and wear a lot of different hats in order to build an entire product I am comfortable launching.
There are a lot of moving of moving pieces in a complete SaaS product: a landing page with signup, an onboarding or setup process, analytics to help improve the product and for marketing, an internal admin application for managing the app and of course there is the application itself. Ultimate Tournament actually has two main user applications: the management software for tournament directors and the mobile schedule and score reporting app for players and captains. From a technical standpoint it needs good infrastructure and reliable CI both preferrably scalable on demand.
With so much to build I learned a lot more about how to configure the frontend part of a Rails application and evolved my opinion on server side rendering vs a single page applications (it always depends!). In order to achieve some of my user interface ideas I ended up learning and adopting React. I also built out an entire authentication stack which included social logins, an internal area and the ability for staff to login to tournament’s to help troubleshoot.
Tournament logistics are tricky! I under estimated the complexity on the backend - Brackets especially are a pretty non-trivial graph structure which is quite different from the data I’ve been working with lately so it was a fun learning experience.
This project really helped me appreciate everything that goes into a SaaS product and helped me better understand everything that happens around me at work. There is a lot more technical work I still want to do on this project like adding ActionCable for websockets and expanding it to other sports. I’ll probably build out an API soon as well, so stay tuned for some updates.
Now I’m trying my hand at marketing to get the word out so people use my app. If you happen to need tournament software or know someone who does please check it out! ultimate-tournament.io