Skip to content

Repository files navigation

Читалка

Современная браузерная читалка для книг в формате FB2. Книга обрабатывается локально: файл не загружается на сервер и может быть открыт как в обычном .fb2, так и в .fb2.zip.

Возможности

  • Открытие FB2 и FB2.ZIP через диалог или drag-and-drop.
  • Поддержка UTF-8, UTF-16 и распространённых однобайтовых кодировок, включая Windows-1251.
  • Адаптивный режим одной или двух страниц.
  • Навигация кнопками, стрелками клавиатуры, Page Up/Page Down и свайпом.
  • Масштаб текста, светлая/тёмная тема и два режима сносок.
  • Обложки и иллюстрации, встроенные в FB2.
  • Сохранение настроек и позиции чтения в localStorage.
  • Оценка времени до конца книги.

Стек

  • Vite — разработка и production-сборка.
  • TypeScript без UI-фреймворка — интерфейс и доменная логика.
  • fflate — распаковка ZIP в браузере.
  • Vitest + jsdom — модульные и интеграционные тесты.
  • GitHub Actions — проверка тестов и сборки.

Минимальная версия Node.js — 22.22.2. Для локальной разработки рекомендуется Node.js 24.

Запуск

npm install
npm run dev

Vite выведет локальный адрес приложения. По умолчанию открывается демонстрационная «Анна Каренина»; другую книгу можно выбрать кнопкой в шапке.

Проверка

npm test
npm run build
npm run preview

Устройство

src/
├── fb2/             загрузка, декодирование, разбор и DOM-рендеринг FB2
├── reader/          пагинация и безопасное локальное хранение
├── app.ts           пользовательские сценарии и управление интерфейсом
├── settings.ts      типы и значения настроек
├── main.ts          точка входа
└── style.css        адаптивный интерфейс и книжная типографика

books/
├── Anna-Karenina.fb2      демонстрационная книга
└── Anna-Karenina.fb2.zip  архивная версия для проверки поддержки ZIP

FB2 преобразуется в DOM напрямую. Текст добавляется через безопасные DOM API, внешние ссылки ограничены протоколами HTTP, HTTPS и mailto, а исполняемый HTML из книги не вставляется в страницу.

About

Reader component

Resources

Stars

83 stars

Watchers

6 watching

Forks

Releases

Packages

Used by

Contributors

Languages