< Back to Blog

Technical Overview

BookClub.Guide runs on a small-form-factor web server in my home. With so many free and low-cost web hosting options available these days, this probably wasn't the most practical decision. But it was a chance to learn end-to-end server administration without having any steps done automatically by a cloud provider. I built the site using the Django web framework and PostgreSQL as the database. A python migration script is regularly run to load bibliographic data from the ISFDB MySQL releases into Postgres, while denormalizing into a schema more suitable for this application.

The algorithm used to generate recommendations is a collaborative filtering, matrix factorization model. Specifically, this is the SVD algorithm from the Surprise python package, with some customizations.

The Book Crossing ratings data set was used jump start the model-tuning. The data isn't an ideal fit for this application for a number of reasons. Because of this, the algorithm's evaluation function was modified so that only the accuracy of predictions for the site's real users (not Book Crossings ratings) was used to guide the tuning of the model.

The site's source can be viewed on Github.