Book Dashboard Project Overview

17 July 2025

When I’m not working on data projects, you’ll usually find me curled up with a good book or hunting for new books at my local bookstore. There’s something deeply satisfying about having a wide range of unread titles waiting on my shelf. To combine my passion for books with my love of data, I created a Tableau dashboard to visualize both my reading habits and my ever-growing collection.

Data Collection

Before creating the dashboard, I first needed to collect the necessary data. For this project, the data collection step was by far the most time-consuming task. I knew I wanted to track information like community ratings so I could compare them to my personal ratings, as well as book genres to see which types I read most often.

To collect the data, I used a variety of methods. With over 300 books on my bookshelf, I decided to write a script to gather the necessary information. Although I considered several book-related APIs, I ultimately chose OpenLibrary for most of the data collection. Since I’ll likely reuse some of this code in future projects, I created several classes to organize methods: an OpenLibraryClient for API calls, a BookDataHelper for parsing book data, and a BookDetails dataclass to store the collected information.

All of the code used to gather the data can be found on my GitHub account under the MyBookshelf project.

Unfortunately, OpenLibrary API did not have data for every book on my Bookshelf, so after running the script, I manually filled in the missing information.

The final dataset is available in the MyBookshelf project in the data folder. You can find all the links at the end of this article.

Dashboard Creation

After gathering the data, I could finally work on creating the dashboard. I chose to keep it relatively simple, using just a few basic visualizations.

TBR Progress Bar

The first visualization shows what percentage of the books on my shelf I’ve actually read. As you can see, there are quite a few unread books (and I’m embarrassed to admit I’ve bought more since building this dashboard).

Genres Pie Chart

Next, I wanted to visualize which genres I read most often. While I try to read a variety, the pie chart clearly shows a few genres I tend to favor. Especially recently, I have found myself reading quite a few fantasy novels, which is shown pretty clearly in this chart.

Average Metrics Visualization

The next set of visualizations focuses on average metrics. I chose to display 4 values: average page count, the number of books that I own but haven’t read, my average personal rating, and the average community rating.

Top Rated Books

The final visualization was the most challenging. I wanted to show my top 10 books in a way that resembled books on a shelf. After lots of experimentation, I discovered I could simulate the effect using a bar chart with reference lines. To vary the height of each ‘book’, I mapped the number of pages to the Rows shelf. Color differences represent each book’s genre. I also added a hover feature to the books to allow users to view individual book details.

I also added a dashboard filter that lets viewers select specific genres. All visualizations update dynamically based on the selected filters. This means you can filter the dashboard based on your personal favorite genres, and find which books I would likely recommend for you!

Learnings Summary

Future Goals

Relevant Links

Data Collection GitHub Project: https://github.com/cbminor/MyBookShelf

Full Data CSV: https://github.com/cbminor/MyBookShelf/blob/main/data/book_info_2025.csv

Tableau Dashboard: https://public.tableau.com/app/profile/chelsie.minor/viz/BookDashboard_17519947562830/Dashboard1