This is a Rails app that implements a basic library.
The app is set up by running docker compose build
followed by docker compose up
Information about books can be created, read, updated and deleted. Books can also be searched and added to lists.
The app can provide book recommendations based on four different categories:
- Current and recent reads
- Books marked as favourites
- Rereads related to your current and recent reads
- Books unrelated to anything read within a specified time period
Books are said to be related if they are by the same author or appear on the same list. Recommendations can be customised in Settings
to allow the user to define how long books should be considered a recent read, how soon they would reread a book and the time period for unrelated recommendations.
Basic author data is extracted from created books to allow the linking of books by the same author.
Lists can be created for the purpose of categorising books. There is a many-to-many relationship between books and lists so that a given book can belong to multiple categories. Default lists include Favourites
and Up next
and there are also two autogenerated pseudo-lists: In progress
and Recent reads
which cannot be modified.
Reading targets can be created to with the aim of reading a certain number of pages or books between specified start and end dates. The progress of the relevant targets is automatically updated when a book is given a date_finished_reading
.