← Все работы
BoowieРаботаетЧиталка и плеер аудиокниг · личный проект

Книги и аудиокниги в одном приложении, даже без интернета

Читает EPUB, FB2 и PDF и проигрывает аудиокниги MP3 и M4B. Книги хранятся в телефоне и открываются без интернета, во встроенном магазине 20 бесплатных классических книг.

Личный проект Mykhailo Plokhin. Устанавливается из браузера на Android и iPhone.

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

Библиотека Boowie: книги, которые вы читаете, и сколько прочитано
Магазин Boowie: выбор редакции и новые бесплатные классики
Плеер аудиокниг Boowie: прогресс по главам, скорость и таймер сна

Задача

Большинство читалок умеют либо текст, либо аудио, просят аккаунт или ломаются на настоящих файлах: странные кодировки, папки в архивах, MP3 без глав.

  • Русские FB2 бывают в windows-1251 или koi8-r, и часто с неверной пометкой.
  • Аудиокнига — это обычно папка файлов или ZIP из приложения «Файлы» на iPhone.
  • Читать и слушать одну книгу — значит держать в согласии две позиции.

Как устроено

Всё работает в браузере. Файлы проходят через одни и те же парсеры, откуда бы они ни пришли — с телефона или из магазина; записи хранятся в IndexedDB, большие файлы — в приватной файловой системе браузера.

Читалка Boowie: первая страница «Рождественской песни» с названием главы и счётчиком страниц
Чтение · страница 6 из 14Прослушивание · 4:40 из 11:40
Переключаетесь между чтением и прослушиванием — и остаётесь на том же месте главы.
Файлы · папки · ZIPВстроенный магазинПарсерыIndexedDBПриватная ФСЧиталка и плеерService worker

Ключевые решения

Каждое решение и альтернатива, которую оно обошло.

Разбирать книги в браузере, без сервера

Книги не покидают устройство, а бэкенд не нужно ни держать, ни оплачивать.

Потоковое чтение ZIP

Папка аудиокниги, сжатая на iPhone, может весить гигабайты. Чтение записей потоком не держит их в памяти — включая архивы ZIP64 и русские имена файлов.

Большие файлы в приватной файловой системе

Origin Private File System хранит большие файлы без ограничений старых хранилищ; старый iOS Safari откатывается на IndexedDB.

Одна позиция для текста и аудио

Если у книги есть аудиоверсия, при переключении место переносится по главе и по тому, насколько далеко вы в ней были.

Цифры

Boowie работает: откройте его на телефоне и добавьте на главный экран. Все цифры здесь проверены в коде или в рабочем приложении.

ПоказательЧто значит
5ФорматыEPUB, FB2, PDF, MP3 и M4B, а также ZIP-архивы с ними.Проверено
20Бесплатных книгКниги из общественного достояния во встроенном магазине; аудиокниги озвучены RHVoice.Проверено
OfflineРаботаетService worker кэширует приложение, а книги хранятся на устройстве.Проверено
Проверено
— Проверено в коде или на рабочей версии

Нужно что-то похожее?

Опишите задачу в паре строк. Ответит человек из команды.

Обсудить проект