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 - I’ve been building a complete Software as a Service (SaaS) for creating and managing Ultimate Frisbee tournaments. I started the project with a team at a charity hackathon and have since continued working on it on my own. I’ve had to learn a lot and wear a lot of different hats 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 a sign up form leading to an onboarding or setup process, analytics to help improve the product and test marketing, an internal admin application for managing the app and of course the application itself. Ultimate Tournament has two main user applications: the management software for tournament directors and the mobile schedule and score reporting app for players and captains at an event. From a software standpoint it needs good infrastructure and reliable CI both preferrably scalable on demand.
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 built out an entire authentication stack which included social logins, an internal area and the ability for staff to login to user’s tournaments 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 try and 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