This is what happens when a coder is dissatisfied with an existing app (Goodreads) and has some time on their hands. I've been faithfully maintaining my Goodreads profile for over 8 years, but there was stuff I wanted to do there that I couldn't.
The app allows easy sorting and filtering of books, as well as viewing books on overlapping shelves. It also displays my ratings and reviews.
Unfortunately, Goodreads is deprecating their API, so I have to run this via CSV imports.
I use the export generated here to pull in books and build shelves dynamically.
The CSV to import is stored in /storage
and the command is php artisan importBooks {filename}
.