Using public libraries, borrowing a friend's books, and buying second-hand books off strangers from the internet are things of the past; due to COVID-19, sharing and using books that other people have handled for an unknown period of time became a seriously dangerous action, and greatly limited our access to books.
A considerably safer option is to buy new books! But for poor college and university students like us, shelling out $40 a month to buy novelty books that we may or may not love is not necessarily the smartest financial decision. Hence, if we were to spend this money in the first place, we better make sure that we are spending it on books that we know we will cherish, enjoy, and reread.
In comes our book-recommending web application, BookRecommender (which, if we may say so ourselves, is a fairly intuitive name) that takes as input your favourite book, and outputs books of similar themes, ratings, and styles! Using this application, you are more likely to find a book that you will love, which means that you will also be wasting less money on books that just don't cut it for you.
What it does
Our book-recommending web application helps people find books that they may enjoy based off of what they previously read. Users simply need to input one of their favourite books, and our web application generates three book recommendations for them to consider!
How we built it
BookRecommender is a web application that uses Machine Learning (TF-IDF vectorization and cosine similarity) to recommend books to users; users are given three options based on their input of a book title that they previously enjoyed. Our team specifically used Python, pandas, and scikit-learn for the Machine Learning capabilities of our application, and our data set was graciously provided by Goodreads. The back end of BookRecommender was built using Flask, and the front end is a simple display created with React.js, SCSS, and Material-UI.
Challenges we ran into
One of the biggest challenges we encountered as a team was learning new technologies to build the back end of our application, such as Flask, Google Cloud, and pandas; obviously, as people new to many of the technologies we were using, debugging was also extremely difficult for us as we needed to rely on documentation and mentorship to solve our issues instead of already knowing what we had to do. In addition, the process of building the back end and the front end occurred at the same time, so there were many struggles in connecting the two as the endpoints were not yet set up to be accessed when needed by the front end, and the styling of the front end needed to be constantly modified to better display information from the back end that was added later on.
Accomplishments that we're proud of
As a team of primarily first-time hackers, it feels incredible having finished a project within two days and two nights! Objectively speaking, BookRecommender is a rather simple application with a minimal display, but its creation required a lot of learning, flexibility, patience, and resilience for all of us in this team - especially in learning new technologies - and we are very proud of that! Although it may not be much, we all gained some knowledge and insight in the technological world this weekend, and seeing BookRecommender come to fruition only makes us want to become better engineers in the future.
What we learned
- It is completely possible to build an application in two days if we wanted to! The journey of knowledge never ends, so why not take the challenge to work on something new, fun, and engaging?
- New technologies are always going to be challenging to learn at first, but all of them present the opportunity for us to improve our technical skills and give our brains a bit of a mental stretch.
- Coding at 5 AM is surprisingly cathartic.
What's next for BookRecommender
BookRecommender is truly simplicity at its finest - it serves its function and requires little maintenance. However, we hope to one day implement an authentication system for users so that they may be able to keep a list of books they would like to read or purchase in the future, and perhaps expand our data set if Goodreads ever decides to create a public API.
Though this may be a soft goodbye to BookRecommender for the time being, our team hopes to continue hacking from our cold, cold home of Canada! If ever there is the chance for us to attend PennApps in person, we would certainly be the first to apply!