In late 2020, I was asked by Chelsea Willingham whether I would be able to put together a web app for a quiz that she was planning on hosting in December. The system that I put together, Quizzical, was inspired by the website used for the Insomnia “World Famous Pub Quiz” remote events during 2020, but with a focus on allowing the other members in a team (other than the team leader, that is) to see the answers that were submitted.
The website was created using a combination of Python and Flask for the backend, with the frontend using Bootstrap for styling and plain JS. I chose this combination of technologies due to my familiarity with them, having used them in my Dissertation project. The clients communicate with the server at predetermined intervals in order to find out the current state of the quiz (e.g. whether a round is in progress, whether your team has submitted their answers, etc.). If I was going to improve the project, I would try to change the communication protocol to use websockets rather than polling, as this would mean that the server can simply tell the clients when something has changed, reducing the complexity of various parts of the system.
On the night of the quiz, the system was deployed to a DigitalOcean Droplet and the url and login codes were distributed to all attendees shortly before the event started. Everything went smoothly, and a couple of those that used the website gave some valuable feedback and suggestions for new features that I plan to include in the future (such as having the option to use multiline textareas rather than textboxes for some questions).