Kudos is a web app that solves some problems and pains the tutoring department at my university was facing. It allows tutors and mentors to add their weekly availability according to which other students will book them.
The project also enables the full-time employees of the department, through an admin platform, to keep track of all the sessions taking place, access statistical data, and manage the resources of the system.
The department was using a previous platform to manage its resources. However, as more services were being offered (writing center and mentoring) and more requirements emerged, the old project was deprecated. The main reason was that the old platform was developed with mainly tutoring in mind and did not allow much flexbility for other services.
The department needed a web application that would support multiple roles with their corresponding platforms and privileges.
Full time employees wanted to have access to the sessions being recorded by students and monitor how much each part-time student was working. They also wanted automatic generation of statistics in order to gain more insights about their operations and report accordingly to executives.
Student working part-time (tutors and mentors) needed a platform that would automatically record the number of hours worked and move away from recording on a plain excel sheet. It was also important to provide them with a way to add their availability for each week and receive an email notification whenever a student had requested them.
For regular students, the booking process had to be fully automated and as seamless as possible requiring actions only from the people concerned (tutor and tutee for example).
I used React on the frontend because that’s what I had the most experience with. I wish there was a more technical reason to why I used React instead of Angular or any other frontend framework, but the reality is that it was simply a matter of what I know and what I can be productive with. However, I definitely don’t regret this choice as I really enjoy coding in React and learning about its different concepts. The React ecosystem is also pretty huge and this makes it really attractive.
I have also used Redux for state management. I thought this would be a good choice at the beggining of the project, but little did I know, this would come to bite really hard... Unfortunately, most of the time, I found myself fetching data on a per-page basis, as opposed to doing complex state management. The time it took me to write actions, corresponding reducers, and selectors for something as simple as fetching new data when the user navigates to a new route was not really worth using Redux. However, lesson learned .. the hard way!
Data is persisted using MongoDB and Nginx was used as a web server to server the static content.
I think this project is my most special one. For the first time, I had the opportunity to witness other people using something I have built. This was by far the most satisfying part about this project. I never imagined I would work on something that would be used by 2000+ users from my community.
It’s really hard to fit everything I have learned in 1 or 2 paragraphs. I dont want trying to turn this page into a blog post. So, in short, these are the things I have learned while working on this project:
Kudos is far from being perfect. It has room for a lot of improvements. I wish I could invest more hours to tackle some of the points I previously discussed, but it has been quite challenging to juggle between my studies and working on Kudos. I also wish I was working with someone else on this. So, if you’re reading this and you’re from AUI, don’t hesitate to contact me if you’re interested in helping.