Minimal Reader

Simple browser-based ebook reader with an emphasis on clean typography.

1 August 2023

Vue Web app

I'm a huge reader of ebooks, but I've never been happy with the reading experience. Ebooks themselves tend to be poorly typeset and barring a few bright-spots the state of ebook readers is pretty sad: either they're old, abandoned, badly designed or just don't work how I'd like. For example Apple Books, which otherwise is a decent reader, doesn't support vertical scrolling, my preferred way of reading.

An ebook reading app.

↑ Oh, the skeuomorphism (and terrible typography).

Ebook readers put often put a lot of effort into replicating the superficial look of books – paper textures, nice page turn animations, carefully rendered wooden bookshelves etc. – without stopping to think whether that interaction model actually makes sense in a digital context.

For example, the page turn. Pages are great for physical reading (we no longer use long rolls of paper for a reason), but they don't make sense for screen-based content. A gimmick that can be safely ditched. On a digital device, where scrolling is a natural interaction, I'd much rather scroll as I read, rather than having to break focus and swipe the screen the next page. Some readers, like

So I decided to make my own book reader. How hard can it be, I thought, when ebooks are basically just a zip file full of HTML and CSS anyway?

I got something working pretty quickly that unzipped the epub and displayed the contents, but I should have realised earlier that this could lead to problems. Turns out that perhaps just decompressing and reading any old random file with no precautions might lead to a few security issues.

After researching a lot of options, I decided to go with epub.js as it had good sandboxing and isolation, was well developed and had most of the features I needed. I also decided to build it as a web app, using the browser's local storage to cache the book files as it was pretty simple to implement and ensured it would run on any platform.

Interactions

Minimal reader library

↑ The library.

Reading  a book

↑ The reading experience.