Creating Unikomet, a module advisor for university students
And how a pandemic got in the way
As it often happens, my idea to create Unikomet originated from my personal experience and needs. As a university student myself I often want to know other students’ opinions on certain modules, or share my own thoughts about the modules I took. In general, I believe that students can benefit hugely from exchanging opinions on university modules.
So I thought.. why not make a website where students can do just that? That is how Unikomet began. A small project to keep me busy, improve my self-taught web-development skills (and my never-used-before marketing ones) and, hopefully at least, benefit the student community in my own little way.
I knew that I wanted Unikomet to be a review-based system. Reviews are widely used everywhere. On TripAdvisor, people write reviews of anything from hotels, to restaurants, to gyms. On Amazon, people review the products they buy and Amazon’s service. Reviews are useful. I tend not to go to a restaurant if it is rated an average of two stars out of five, and I hesitate less to buy a product that has thousands of positive ratings. Given how widespread review-based systems are, I was surprised to realize that there was no online public website where students could review their university modules. It was time to start filling in the gap!
The idea was simple:
- Gather structured data about the modules that are offered at my university
- Make a website where the user can look up any module to see its reviews or write her own
- Get students to visit the website and write reviews
1. Getting the data
The first step was easy. My university (UCL) published an online module catalogue: basically, the module catalogue is a comprehensive catalogue of all modules across the whole of UCL published on the website in a consistent, searchable and accessible format.
I wasn’t going to get the data from there manually, as they have 6000+ modules and even though I tend to waste my time more than I’d like to admit that would have been too much even for me. Fortunately, with a bit of web scraping using Python it was easy (and fun!) to get all the data in the module catalogue in much less time. Now, it was time to start building the website!
2. Making the website
I was already familiar with the frontend development fundamentals but had zero knowledge of backend stuff, but that was part of the excitement for me as I really wanted to get my hands dirty with it and learn. Luckily, when I decided to start building the website I was in good company as my geeky friend and partner-in-business-ideas-that-might-never-take-off Gustav was sipping his third pint and sharing the excitement. He even went home quickly to pick up his laptop and came back for some tipsy coding at Huntley’s! What a legend. Gustav is more familiar with full-stack web development, and he said we should build the website on the MERN stack (MongoDB, Express.js, React, Node.js) and deploy it with AWS Elastic Beanstalk. So there I was, watching a (very good) tutorial on the MERN stack while sipping yet another beer, and setting up the project with Gustav. It felt good. In the following days and weeks, Gustav and I made a lot of progress. And I learned a lot of stuff, from how to make an API to how to use React. We picked ReactStrap as our frontend library. It’s not too bad (especially if you are already familiar with Bootstrap) but if we were to build something from scratch now we’d go for a more complete and neat-looking library, like Ant.js.
We soon realized we still did not have a name for the website. We quickly ruled out stuff like “ReviewMyModule!” or “UCLModuleReviews”, not just because they sounded blend but also because we did not know how the platform was going to evolve over time, and did not feel like using a name that constrained it. One day, we randomly thought of the name Unikomment, which became Unikomet when my girlfriend unknowingly recommended it to us in a conversation:
- Gustav & I: “Hey Asia, what do you think of the name Unikomment for the website?”
- Asia: “I think it sounds great!”
- Gustav and I: “Well then, Unikomment it is! Awesome”
- Asia: “Wait, did you say Unikomment? I thought you said Unikomet. Unikomment sucks sorry, but Unikomet is perfect!”
So there we are, paying for the domain name www.unikomet.com, nice! At that point, the website was almost finished. But we still needed to find a way to make sure that not just anyone could write reviews of UCL modules. Instead, only UCL students should be allowed to do so. Otherwise, how could we make sure the reviews are reliable? The UCL API made the task of authenticating users incredibly easy. The UCL API is a (great) student-led project that allows developers to build apps using UCL data. As of now, it provides developers with API endpoints to do stuff like getting details of all bookable rooms at UCL, getting modules’ timetables, getting data about how many free seats there are at UCL’s libraries, and much more. We used their OAuth protocol, which lets external apps request secure access to private UCL account data (without getting your password, that is). Thanks to the UCL API, we could require users to log in to their UCL account in order to write module reviews. Amazing! Authenticating the users is also useful for other things, for example for setting a cap to the number of reviews a user can write for any given module. Find a demo of UCL API’s OAuth here: https://uclapi-oauth-demo.glitch.me/.
I then set up Google Analytics (using this React module) which is pure gold for data freaks like Gustav and I, and Gustav took care of some (much-needed!) security measures.
3. Spreading the word!
At this point (and after a bit of frontend creativity which reached its peak in my adoption of the Roboto font) the website was ready, but it certainly wasn’t going to take off by itself. Unaware of the fact that the Covid-19 outbreak was going to make my efforts useless, I naively designed an A6 leaflet using Canva and ordered 2500 printed copies on HelloPrint (I recommend both services by the way!).
The idea was to disseminate the leaflets around the university, but the universe had other plans and when the Coronavirus started spreading in the UK, UCL decided to close most of its buildings and ban all face-to-face lectures. So when Gustav and I went there with the leaflets, the place was emptier than on New Year’s Eve. I obviously agreed with UCL’s decision, but I did feel a bit (or a bit more than a bit) unlucky as my whole marketing strategy had just been swept away by the pandemic.
Luckily, some friends helped me spread the word about Unikomet online, and the website launched successfully! It’s still in its early stages, but hopefully it will grow over time and many students will find it useful. Regardless of how far it gets though, it has been a cool learning project. The first of many! Stay tuned 😎
24/04/2020 update: students from 30 different UCL departments have already reviewed modules!