Knowledge Bowl is a global interdisciplinary Quiz Bowl-esque competition. After the COVID-19 pandemic, districts around the world were unable to host Knowledge Bowl meets in-person, meaning students that were originally ecstatic about competing, making new friends, and winning scholarships were unable to do so.
We saw this as an opportunity to give back to and serve our community by creating an application that is able to not only host competitions but also allow students to collaborate and make long-lasting friendships along the way. In fact, after contacting the board of directors for Knowledge Bowl in Washington State, they adored our idea so much that we decided to make it happen.
Kbowl is a virtual Knowledge Bowl solution, tailored to usability and pragmatism, exactly what both students and teachers want. Kbowl consists of a management page, where teachers and competition executives are able to create, view, and manage Knowledge Bowl teams with ease. Students are able to “buzz in“ with their answers, where the teachers can verify them. This allows a comprehensive, but simplistic and cohesive approach to Knowledge Bowl. Our application is not a compromise; it enhances the Knowledge Bowl experience whether virtual or in-person.
- Lucia js
- Server-Side Rendering
🧰 How We built it
We innovated upon the traditional LEET stack (Lucia, EJS, Express, TypeScript) stack, adding support for Socket.io functionality and server-side rendering while maintaining the stability of the application. We understand that making the application as robust as possible is integral to the Knowledge Bowl experience. If there is too much latency, error, or lag, then Knowledge Bowlers will give up completely on online Knowledge Bowl. This is why our infrastructure is battle-tested, as we not only leveraged ad-hoc testing, but we also used our own version of enhanced unit testing to ensure consistency.
😓 Challenges We ran into
Websockets are hard. Whether it be issues with config, security, origins, etc, it is really difficult to implement reliably. When we first attempted to use Socket.io, we encountered many CORS errors because we were using a Go+Gin and Netlify stack. After a few hours of wrangling websockets together, we dropped the idea and opted for a consistent and stable stack. It was a big setback, but our team was able to pivot and stay flexible and open to alternatives.
🏅 Accomplishments that we're proud of
We’re able to serve an entire community in Washington, Colorado and more Created cohesive, sustainable solution with potential for even more growth and public outreach We pivoted quickly and published a final product that is able to impact our community
📖 What we learned
That hard work comes with compromise. If we wanted to create something meaningful, we would need to pull all nighters and code our hearts out Time is precious, we needed to value every second of every hour, maximizing the value we output Impact is important. One thing we think that makes our solution different is that we actually can immediately impact communities and have them actually benefit from our solution.
➡️ What's next for Kbowl
We want to implement our application in the Washington kbowl scene (It has been approved by South Washington districts to use in next regional meet 3/17/2021). We hope next year our application can be used even more extensively not only in Washington regional districts, but state competitions and even national as well.
Shoot us a comment if you want to have a coffee chat over Zoom 😃
Made with 😢 + ❤️ by Tejas Agarwal, Aiden Bai, Melinda Chang, William Lane