About
Why PandaReader exists
PandaReader started in July 2026 as a reader for one household's Calibre library, which lived on a home server and never quite fit any existing app. The goal has stayed the same since: pull books in from wherever they actually live, and read them with a reader you can tune to exactly how you want it.
Timeline
| When | Milestone |
|---|---|
| July 2026 | First versions: WebDAV, FTP and SFTP sources, Calibre detection, a WebView-based EPUB reader with scroll and paged modes, exact page counts, local sync. Books, Authors and Series views and the A–Z index. Calibre wireless sync. |
| July 31, 2026 | Source goes into git. NFSv3 and SMB sources. First GitHub release, 1.0.39. |
| August 1–2, 2026 | SFTP key auth with on-device key generation, SSH key management, case-insensitive paths, sync as a foreground service, reader settings live preview. Multi-format support arrives: PDF, comics, plain text, MOBI/AZW3 with a from-scratch parser, then DjVu and FB2. |
| August 7, 2026 | Version 1.2.0 replaces the WebView with the from-scratch text engine and adds the native PDF viewer: real text selection, highlights and notes. |
| August 9–10, 2026 | Version 1.5.0 brings pinch-to-zoom and free panning back for image formats. The three-source series lookup lands with user-owned Hardcover keys. |
| August 13–18, 2026 | Version 1.6.0: hidden books and the Hidden page. Highlight editing, auto-merge across page breaks and the drag magnifier follow in 1.6.7. |
| September 2–3, 2026 | Offline mode: hide everything that is not available locally, reacting live to connectivity. |
| September 5, 2026 | Version 1.7.0: progressive layout, so books open instantly. First public, release-signed APK published to PandaReader-releases. |
| October 17, 2026 | Version 1.7.1: Hardcover's scoped API keys, correct failure caching, app-wide rate-limit handling. |
| October 17, 2026 | Version 1.7.2: the app moves to the io.pandareader package and gains an About section linking to pandareader.io, which goes live as the project site. |
The changelog has every one of the 220 versions in between.
Technology
Platform
- Kotlin 2.1, Android Gradle Plugin 9.3
- Jetpack Compose with Material 3 (BOM 2025.01)
- Kotlin coroutines and serialization
- WorkManager, DataStore, Security-Crypto
- minSdk 29 (Android 10), targetSdk 36
Sources
- sardine-android (WebDAV)
- Apache commons-net (FTP)
- sshj 0.38 (SFTP) with Bouncy Castle 1.75
- smbj 0.13 (SMB 2/3)
- Own ONC-RPC/XDR/NFSv3 client
- Own Calibre Smart Device client
Reading
- Readium Kotlin toolkit 3.3 for EPUB parsing only
- Jsoup for XHTML, Android StaticLayout for text
- pdfium-android for PDF
- junrar, commons-compress and xz for comic archives
- djvu.js for DjVu
- Own MOBI/KF8 parser
Bundled font
OpenDyslexic Regular and Bold are bundled under their open licence, and scaled slightly so they match other typefaces at the same size setting.
Scope and principles
- Your servers, your data. No account, no cloud, no analytics. External lookups are optional and use your own API keys.
- No DRM removal, ever. Protected formats are not scanned.
- Exact over estimated. Page counts and positions are real, even when that costs more engineering.
- Fix the cause. The changelog is frank about what broke and why; fixes are verified against real files and real device data before they ship.
- One changelog. The in-app What's new list is the record of what shipped when, and this site is generated from it.
PandaReader is a personal project by SirBiggin. It is not affiliated with Calibre, Hardcover, Open Library, Google or Amazon.