Requirements

User persona

My name is Anne E.B. Reader and I’m a Calibre user.

I would love to be able to quickly open a book from my library without having to open Calibre, wait for it to load, search with Ctrl-F, open the book by clicking the format, then switch back to Calibre and close it.

I use Arch btw.

Assumptions/Constraints

My library is for personal use and, for sure, contains < 50 000 books. (That’d be if I got like two books every week over 50 years.)

Technical note: Their device might have only 1 GB of RAM, so the program must use < 100 MB (roughly max. 2 KB per book if all books are represented in memory).

Use cases

I want to be able to quickly open a book from my library, by entering a word or two of the book’s title and pressing Enter.

I also want to be able to use the author’s name to help narrow down the search.

I also want to be able to use topics/tags to help narrow down the search.

If I have the book in more than one format in my library (e.g. PDF and EPUB), I want to be able to choose the format to open for that particular book.

  • For some books, the layout of the PDF is better.

  • If I’m reading a programming book and following along in an IDE, I want to be able to open the EPUB in a narrow window and have the text be reflowed.

The book should be opened in my default application for that file format.

I have more than one Calibre library on my device, so I want to be able to specify which library to search.

However, most of my searches will be in the same library, in which case I don’t want to have to specify it. I.e. I want to set a default or have my last choice remembered.

In most cases, once I’ve opened the book I’m looking for, I don’t need to search any further, so the program should close itself.

For cases where I want to do a subsequent search, if the program starts up fast enough, I don’t mind just launching a new instance. Otherwise, I should have the option to keep the program open after my first search is successfully completed.

Since I don’t typically finish a book in one sitting, I want to be able to re-open a recently opened book without having to search for it from scratch.

Out of scope

— I’m A. Lil Librarian and I want to do library management tasks, like:

  • adding books to the library
  • updating the metadata for a book
  • converting books from one format to another
  • checking that author names are recorded consistently
  • checking that publisher names are recorded consistently
  • displaying the books published by a given publisher
  • displaying books sorted by publication date
  • calculating summary statistics for publication dates, file formats, language, etc.

— That’s cool, but you must just use the Calibre GUI or calibredb for that. Or some other Calibre-compatible application. Or even sqlite directly.