My new bookshelf is ready

2 minute read

Yes! My bookshelf is ready!!

At the beginning of the year, I did start a personal project that has been on my list since 2017. I wanted to have the information of the books I’m reading with the minimum effort possible. At that time, I started using Goodreads to track my readings. In fact, the whole family started using it. It provides the functionality I want even though the site is terribly ugly.

I do not like the way the data is presented in Goodreads, and since reading books is an essential part of my learning workflow, I wanted to integrate it into my site. It took me several small projects to find the right way to do it for me. And, it looks like the current solution serves me well.

How does it work?

The workflow to get the books from Goodreads to my site goes as follow:

  1. I use Goodreads to trace my reads. There I collect read books, the ones I’m reading now, and those I want to read in the future.
  2. Weakly, I export the library from Goodreads to a CSV file.
  3. That CVS file goes into my blog.
  4. There, I use my new Python package that processes the CVS file to generate the JSON files used in the site.
  5. I have prepared several pages on my Jekyll site that consumes those JSON files and shows the content the way I want.

Every Friday, while publishing my latest post, I do that job that takes me five minutes.

I would like to further automate that process, mainly step 2, where I need to go to Goodreads and export the file. Unfortunately, Goodreads is not allowing access to their APIs anymore. So, in the meantime, I’m doing that manually. The resulting CSV is in my blog and under the control version. If things change, I just need to adapt my python package to the new input format.

Backend

Last year I learned Python, and I wanted to put it into practice. I found that small package a great opportunity, and it was. I did write a small explanation about that in another entry.

Front-end

Considering that I’m not a front-end developer, I’m proud of the result. I feel good when I look at it, and it shows the information that I want to show. In a way, I can enjoy my books in another format now.

As a result, I did learn quite a bit about CSS. Mainly, how it is used to build websites compatible with the different screen form factors. I had to learn the fundamentals of both CSS and HTML, but I did skip JS since I wanted to avoid it on my site. It is something that I’ll tackle in the future, nonetheless.

There are a ton of performance improvements that I can do there, but I won’t invest the time right now. Other exciting projects are asking for my attention. The next stop will be an iOS project!

References