← All work
BoowieLiveReader & audiobook player · personal project

Books and audiobooks in one app, even offline

Reads EPUB, FB2 and PDF and plays MP3 and M4B audiobooks. Books stay on the phone and open without internet; the built-in store has 20 free classics.

Personal project by Mykhailo Plokhin. Installs from the browser on Android and iPhone.

Open the live appSource codeboovie-kappa.vercel.app

Next.js · TypeScript · IndexedDB · OPFS · Service Worker

Boowie library: the books in progress, with how much of each is read
Boowie store: an editor's pick and new free classics
Boowie audiobook player with chapter progress, playback speed and a sleep timer

The problem

Most readers handle either text or audio, want an account, or break on real-life files: odd encodings, zipped folders, MP3s without chapters.

  • Russian FB2 files come in windows-1251 or koi8-r, often mislabelled.
  • An audiobook is usually a folder of files, or a ZIP made by the iPhone Files app.
  • Reading and listening to the same book means two positions to keep in step.

How it is built

Everything runs in the browser. Files go through the same parsers whether they come from the phone or the store; records go to IndexedDB, large files to the browser's private file system.

Boowie reader: the first page of A Christmas Carol, with the chapter title and page counter
Reading · page 6 of 14Listening · 4:40 of 11:40
Switch between reading and listening and you stay in the same place in the chapter.
Files · folders · ZIPBuilt-in storeParsersIndexedDBPrivate file systemReader & playerService worker

Key decisions

Each choice, and the alternative it beat.

Parse books in the browser, no server

Books never leave the device, and there is no backend to run or pay for.

A streaming ZIP reader

An audiobook folder zipped on an iPhone can be gigabytes. Reading entries as a stream keeps them out of memory, including ZIP64 archives and Russian file names.

Large files in the private file system

The Origin Private File System holds big files without the limits of older storage; older iOS Safari falls back to IndexedDB.

One position for text and audio

When a book has an audio edition, switching maps the place by chapter and by how far into it you were.

Numbers

Boowie is live: open it on a phone and add it to the home screen. Every figure here is checked in the code or on the live app.

FigureWhat it means
5FormatsEPUB, FB2, PDF, MP3 and M4B, plus ZIP archives of them.Measured
20Free booksPublic-domain titles in the built-in store; the audiobooks are narrated with RHVoice.Measured
OfflineWorksA service worker caches the app, and books are stored on the device.Measured
Measured
— Checked in the code or on the live build

Need something similar?

Tell us what you need in a few lines. A person from the team replies.

Start a project