Material You 3 eBook/audiobook reader — Episteme fork + bookshelf-api/ABS
* Improved navigation and search result highlighting in the EPUB reader * refactor: implement JIT chunk restoration for robust navigation - Fixes search and bookmark navigation failing in same-chapter transitions. - Introduced JIT (Just-in-Time) HTML restoration in `epub_reader.js` to re-populate virtualized chunks before CFI resolution or search scrolling. - Synchronized search highlighting and user highlights within newly-restored chunk segments. - Improved search navigation accuracy by mapping occurrences to relative chunk indices. * Implemented a custom text selection engine for the paginated EPUB reader to support cross-page selection and improved handle interaction. * Implemented management of external file behavior and improved library filtering. * Added support for toolbar customization in the EPUB reader. * Added support for toolbar customization in the PDF reader. * fix: rendering during auto-scroll and navigation on long pages * Added a "Scroll to Top" feature to the auto-scroll controls in both EPUB and PDF readers. |
||
|---|---|---|
| .github | ||
| app | ||
| docs | ||
| fastlane/metadata/android/en-US | ||
| gradle | ||
| spotless | ||
| .gitignore | ||
| build.gradle.kts | ||
| CLA.md | ||
| CONTRIBUTING.md | ||
| gradle.properties | ||
| gradlew | ||
| gradlew.bat | ||
| LICENSE | ||
| README.md | ||
| settings.gradle.kts | ||
Episteme Reader
A modern, offline‑first, privacy‑focused document & e‑book reader for Android, built with Kotlin and Jetpack Compose.
Overview
Episteme Reader is an offline-first reader for documents and e‑books on Android. It focuses on a clean and customizable reading experience.
Note: This is the Open Source (OSS) edition of Episteme Reader. The Google Play version is built from this core and may include additional proprietary features.
Features
Supported Formats
- Documents: PDF, DOCX
- E‑books: EPUB, MOBI, AZW3, FB2
- Comics: CBZ, CBR, CB7
- Text: MD, TXT, HTML
Reading Experience
- Themes (PDF & EPUB): Light, Dark, Sepia, OLED, Auto (system) and custom
- PDF Modes: Vertical scroll and paginated view
- EPUB Modes: WebView-based vertical scrolling and custom paginated engine
- Custom Fonts: Import user-provided fonts (
.ttf,.otf) - Typography: Adjustable font size, line spacing, and margins
Annotations (PDF)
- Ink Annotations: Pen, Highlighter, Eraser
- Text Annotations: Place notes anywhere, with system or custom fonts
Library & OPDS
- Library: Built-in organization and quick access to your files
- OPDS Support: Browse, search, and add books from OPDS 1.x/2.0 catalogs, with optional authentication
Accessibility & Utilities
- Text-to-Speech (TTS): Read documents aloud using the system TTS engine
- Offline‑first: Core features work fully offline; no analytics or tracking
Architecture
- UI: 100% Jetpack Compose (Material 3)
- Pattern: MVVM with Unidirectional Data Flow
- Database: Room (SQLite) for metadata and annotations
- PDF Engine:
pdfium-android(Native PDFium bindings) - EPUB Engine: WebView for vertical mode; custom renderer for paginated mode
- MOBI/AZW3: Custom JNI bindings to
libmobi - OPDS: Lightweight feed parsing and downloading (on-device)
Building from Source
-
Clone the repository:
git clone https://github.com/Aryan-Raj3112/episteme.git cd episteme -
Build:
- Open in Android Studio and run the
ossDebugvariant, or - Build from the command line:
./gradlew assembleOssDebug
The APK will be generated at:
app/build/outputs/apk/oss/debug/Episteme-oss-v{version}-oss-debug.apk - Open in Android Studio and run the
Open Source Libraries
Powered by the Android OSS ecosystem:
- Core & UI: AndroidX, Jetpack Compose, Kotlinx Serialization
- Document Engines: PdfiumAndroidKt (PDF), libmobi (MOBI/AZW3), Google WOFF2 (fonts)
- Parsers: Jsoup (HTML/EPUB), Flexmark (Markdown)
- Media & Image Loading: Coil, Media3 (ExoPlayer)
- Utilities: Room (Database), Timber (Logging)
Contributors
- CCerrer — Testing & QA
License
Licensed under the GNU Affero General Public License v3.0 (AGPL‑3.0). See the LICENSE file.
Support the Project
Help make Episteme Reader even better.
- ❤️ Sponsor on GitHub
- ⭐ Star the repository to help visibility
- 🐞 Report bugs or request features via GitHub Issues
- 💬 Share feedback in Discussions (ideas/UX): Discussions
- ✍️ Leave a review on the Google Play Store
- 📣 Tell a friend!

