Inspiration

One of the few things that bring our team joy at the University of Waterloo is participating in sports to stay active. Unfortunately, many events are poorly organized, which detracts from the experience. For instance, at the Engineering Society Badminton Tournament, we noticed that everything was managed with paper. We saw an opportunity to improve this process with tourni: a platform to streamline tournament organization. With tourni, we aim to revitalize competitive spirit and bring organization to sports at the University of Waterloo.

What it does

Tourni is a tournament portal that connects participants and organizers seamlessly. Organizers can set up a double-elimination, 64-team bracket in under a minute using a user-friendly interface. tourni also integrates WebRTC for live streaming, allowing even non-technical organizers to host live matches for spectators. Additionally, tourni tracks detailed stats and match histories, creating a unique card-collection system where athletes can collect digital badges representing opponents they’ve defeated. This system fosters healthy competition, celebrates player achievements, and gives participants goals to chase.

How we built it

tourni leverages a full-stack TypeScript setup:

  • Frontend: React with Tailwind CSS for a clean, responsive design.
  • Backend: Next.js for serverless API routes.
  • Database: PostgreSQL hosted on AWS RDS, ensuring robust data management. We also implemented WebRTC for live streaming, incorporating peer-to-peer networking with a signalling server for secure video connections.

Challenges we ran into

Our team faced several challenges:

  • Collaboration: This was our first time working on a large web application as a team, leading to issues with merge conflicts and adapting to React’s nuances.
  • Technical Hurdles: Connecting tournament brackets to the database and keeping the front end synced with backend updates required careful data modelling and state management.
  • New Technologies: Setting up WebRTC was particularly challenging, as we were new to signalling protocols and establishing secure connections. Unfortunately, we ran out of time to implement features like live chat for tournament streams.

Accomplishments that we're proud of

We are incredibly proud to have turned an empty Git repository into functional software in 24 hours. tourni brings people together through friendly competition, and creating a visually appealing, user-friendly product was a rewarding achievement for our team.

What we learned

PostgreSQL: Many of us were first-time users, and setting up an efficient relational database was a valuable learning experience. Collaboration: This project taught us how to work effectively in a team, handle merge conflicts, and manage code structure in a collaborative environment. WebRTC: Although challenging, integrating video streaming broadened our understanding of real-time communication protocols.

What's next for tourni

We see tourni as more than just a tool for badminton tournaments. It has the potential to organize a wide variety of events, from chess tournaments to eSports competitions. Our next steps include:

  • Expanding support for different tournament types (eg. 12-seed playoffs, skill-based matchmaking)
  • Implementing features like live chat for streams and advanced analytics for players.
  • Collaborating with student organizations at the University of Waterloo to bring tourni to local events.

Built With

Share this project:

Updates