uniLeague

hey
Live demo

Context

  • Timeline: January – May 2022.
  • Type: Group work.
  • Course: IDG3920 - Bachelorthesis BWU.
  • Role: Back-end developer.
  • Tools: React.js, Express, Node.js, MongoDB, Mongoose, Passport, PassportJWT, Bcrypt, convert-excel-to-json and Yup.

Purpose of this project

In IDG1292 Web Coding, Kahoot! has been used as a teaching tool for the last 2 years. Feedback given by students indicates that the kahoot league motivates them. Further research is needed to study the feasability to extend the league for a whole semester, academic course or even 3-year programme. To do so, a digital tool to collect the results of the league and show statistics is required.

uniLeague is a full-stack single page application that automatically generates a class leaderboard and gives each student individual statistics regarding their quiz performance. The application is developed by myself, Glenn and Tom to analyze if and how displaying Kahoot!-quiz results engages students in IDG2100 at NTNU in Gjøvik.

Strengths

  • Sustainable
  • Usability testing

Potential improvements

  • Database structure
  • Integrating FEIDE login

Database structure

The current database structure has embedded studyperiods (a number between 1 and 6 representing semesters) inside "studyprogrammes", this is an antipattern regarding how the data from the database is used. Studyperiods data is accessed on it's own and should therefore be seperated into its own schema. In this way, database queries would be faster.

Integrating FEIDE login

The current login system is created from scratch using JSON Web Tokens, HTTP only cookies and session storage to persist login. The ideal solution would have to be integrating FEIDE which is already used at NTNU. This would be a huge improvement for uniLeague, since information about studyprogramme and specific courses can be utilized. Currently studyprogrammes and courses must be manually created by an administrator. The application would also require less maintenance because FEIDE handles all the data about students and teachers.

What would i have done differently?

If I were to create the back end for uniLeague once more, I would have used Test Driven Development. Using Test Driven Development enables easier refactoring, more efficient and code that is well documented. Since uniLeague will be further developed, I think it would benefit the project.