DynastyReader is a fast, lightweight, unofficial reader for Dynasty Scans, built with Rust, Tauri v2, and SolidJS. It runs natively across Windows, Linux, and Android. It stores metadata, reading progress, custom collections, and downloaded chapters locally in SQLite, using conditional ETag caching to keep upstream server requests minimal.
DynastyReader was extracted from Project Curator into a standalone application with specific design priorities:
- Low Server Impact: Uses conditional HTTP requests (
If-None-Match/ETag) and connection pooling to avoid re-downloading unchanged metadata. Mass scraping and aggressive bulk downloaders are intentionally omitted to respect upstream infrastructure. - Local & Anonymous: No accounts, logins, or telemetry. Bookmarks, reading history, subscriptions, custom collections, and cached metadata stay on your local device.
- Self-Contained & Portable: Desktop configuration, SQLite database files, covers, downloaded chapters, and local imports live inside a single portable
.data/folder next to the executable. - Offline Reading & Local Imports: Read downloaded chapters on the go, or import external
.cbzarchives and local image folders directly into your personal library. - Reactive Performance: Fine-grained reactive SolidJS frontend coupled with an asynchronous Rust backend, supporting slot window virtualization, zero-flicker cover hydration, smooth wheel animations, and low memory overhead.
| Browse | Search |
|---|---|
![]() |
![]() |
| Downloads | Library |
![]() |
![]() |
| Reader Spread | Reader Scroll - Long Strip |
|---|---|
![]() |
![]() |
| Mobile - Browse | Mobile - Library |
|---|---|
![]() |
![]() |
DynastyReader targets desktop and mobile platforms, but has been verified specifically on the following environments:
- Windows: Tested and verified on Windows 10 (x86_64).
- Android: Tested and actively daily-driven on real phone hardware (Android 16), alongside emulator testing on Android 17 (Pixel 9).
- Linux: Tested on Ubuntu via WSL2; standalone universal AppImage and Debian (
.deb) packages are automatically compiled and published through GitHub Actions CI.
- Backend / Runtime: Rust (2021 edition), Tauri v2, Tokio async runtime, Mimalloc global allocator
- HTTP Client: Reqwest (
rustls-tlswithwebpki-rootsfor pure-Rust TLS across platforms, HTTP/2 connection pooling, ETag revalidation) - Database: SQLite 3 via
rusqlite(bundled, WAL mode, pooled connections, online backup, native SQLite authorizer) - Image Engine:
imagecrate (WebP transcoding, accelerated decoders) andwebp - Frontend: TypeScript, Vite 6, SolidJS (fine-grained reactive signals and stores)
- Styling: Modular CSS design with classic desktop WinForms / retro Aero and modern Flat Dark, Light, and High-Contrast themes, alongside customizable accent color presets
- Haptics & Touch: Native platform haptic vibration engine and touch overscroll physics
- Icons: Bootstrap Icons font
- Flexible Reading Modes: Single-Page, Continuous Vertical Scroll, and Dual-Page Spread (LTR / RTL with first-page cover offset toggle).
- Scroll Lock Mode: Optional discrete page-by-page stepping in vertical continuous scroll mode, utilizing symmetric zero-boundary
easeInOutQuadtransitions to eliminate initial jerk and overshoot. - Mobile Landscape Overrides: Configurable automatic orientation switching to toggle Paged or Spread layout and Fit-Height when rotating mobile devices into landscape.
- Dynamic Zoom & Pan: Fluid pinch-to-zoom across all fit modes on touchscreens, with double-tap zoom reset.
- Real-Time Image Filters: Popover controls for brightness, contrast, grayscale, and sepia adjustments.
- Touch & Gesture Navigation: Smooth drag pull-overscroll chapter transitions with configurable haptic feedback and spring physics, edge swipe boundary safety, and customizable tap zones with an interactive layout guide.
- Smart Webtoon Handling: Automatically detects long-strip chapters to suppress dual-page spread mode and enforce fit-to-width.
- Keyboard Navigation & Hotkeys: Full custom shortcut manager with key combination recording; Vim keybindings (
h/j/k/l), percentage-based page jumps (0–9), and a quick page jump dialog. - Exact Resumption & Offline Pages: Saves page-level progress and completion to SQLite on turn; supports chapter prefetching and offline storage. Android status bar hiding is supported for distraction-free reading.
- Five-Panel Hub: Followed Series (with unread release indicators), Custom Collections / Favorites, Bookmarks, timestamped Reading History, and Local Imports.
- Local CBZ & Folder Import: Import and read local manga chapters or volumes directly from
.cbz/.ziparchives or image directories; edit local series metadata with cover extraction and file preview. - Collection Management: Create, rename, and organize user-defined collections with series or individual chapter entries.
- Backup & Transfer: Export and import followed series and collections to and from copiable JSON or clipboard text, with selectable single or multi-collection scoping.
- Batch Management: Search and filter library panes locally; bulk clear support for reading history and bookmarks.
- Instant State Sync: Reactive SolidJS state refreshes all library views immediately upon mutation without full view reloads.
- Sub-Tab Navigation: Recent Releases, Recently Added, Downloaded, Series Directory, Tags Directory, and Search.
- Search & Go: Collapsible header with category-filtered Typeahead search, tag autocompletion, and direct Dynasty Scans URL pasting.
- Low-Impact SWR Caching: Stale-while-revalidate caching with
If-None-Match/ETagvalidation, live lifetime bandwidth saved statistics, and session traffic monitoring. - Zero-Flicker Cover Hydration: Reactive image cache with memory store and placeholder hydration to prevent layout shifts.
- Dedicated Download Manager: Queue management with pause, resume, per-chapter cancel/retry, real-time speed meter, ETA estimation, and session bandwidth tracking.
- Network & Scheduling Constraints: Wi-Fi-only download enforcement (ideal for mobile metered connections) and configurable scheduled download time windows.
- Automatic Cache Ceiling & LRU Pruning: Set a maximum disk storage ceiling for cached chapters with automatic LRU (Least Recently Used) pruning of already-read chapters.
- Granular Storage Overview: Disk footprint inspection by series, orphan chapter detection, and one-click purge tools.
- SQLite Database Utilities: Live table row statistics, online SQLite database backup creation, restoration from file with schema validation, and database wipe.
- Tag Taxonomy & Blacklist: Categorized tags (Author, Scanlator, Pairing, Doujin, Series, etc.) with customizable Hide or Trigger-Warning overlay modes.
- Theming & Accents: Full Dark, Light, High-Contrast, and classic Aero themes, complemented by customizable accent color presets (Slate, Crimson, Forest, Violet, Amber, Rose, Cyan).
- Fluid UI Scaling: Global UI scaling from 50% to 200% across desktop and mobile, with decoupled manga viewport sizing.
- Custom Keyboard Shortcuts: Interactive shortcut manager with key combination recording and conflict detection.
- Responsive Mobile Shell: Adaptive layout with compact topbar, segmented bottom navigation bar, mobile 4px overlay scrollbars, touch overscroll containment, and collapsible reader controls drawer.
- Haptic Engine Settings: Dedicated haptic feedback configuration with adjustable vibration durations and live pattern previews for taps, page turns, chapter snaps, and confirmations.
- In-App Updates & Logs: Automated GitHub release SemVer update checker with direct binary replacement on Windows, plus one-click access to application logs.
The current roadmap focuses on stability, real-world reliability, and thoughtful distribution:
- Personal Daily Driving & Dogfooding: The author actively uses DynastyReader as their daily manga reader across Windows 10 and Android, ensuring practical ergonomics, battery efficiency, and smooth touch physics.
- Continual Bug Fixes & Refinements: Maintaining stability and addressing edge cases, regressions, or upstream website changes as they are discovered during daily use.
- Milestone v1.0.0: Keeping the application stable in the
v0.xseries until personal daily use proves it is thoroughly polished and rock-solid, at which point the version will be bumped tov1.0.0. - F-Droid & Package Distribution: Once v1.0.0 is released, packaging and submitting DynastyReader to F-Droid (and exploring other community package repositories) for streamlined Android distribution, in addition to standalone GitHub releases.
On desktop platforms, all application data is stored in a self-contained .data/ folder located next to the executable (on Android, standard sandboxed application storage is used):
.data/
├── dynasty_reader.db # SQLite database (history, bookmarks, subscriptions, progress, blacklists, collections)
├── dynasty_reader.backup.<ts>.db # Optional online database backups
├── covers/ # Cached series and chapter covers (.webp)
├── pages/ # Downloaded offline chapter pages
│ └── <series_slug>/
│ └── <chapter_slug>/
│ ├── page_0001.jpg
│ ├── page_0002.jpg
│ └── ...
├── local/ # Local manga unpacked from CBZ archives or image folders
│ └── <series_slug>/
│ └── chapters/
│ └── <chapter_slug>/
│ ├── p000.jpg
│ └── ...
└── logs/
└── dynasty-reader.log # Application rolling logs
- Node.js: >= 20.x and
npm - Rust:
stable-x86_64-pc-windows-msvc(Cargo >= 1.80) or platform equivalent - sccache (Optional): Automatically used for build caching if present in
.rust/.cargo/bin/sccache.exe.
To bootstrap a local, portable Rust environment inside the project folder without system-wide changes:
.\setup_env.ps1# 1. Load the local toolchain environment (skip if using system Rust)
. .\env.ps1
# 2. Start Vite + Tauri dev mode
.\dev.ps1To build and assemble the standalone portable distribution for Windows:
# Build and stage to portable/ directory
.\build_release_portable.ps1
# Optional: also package as a .zip archive
.\build_release_portable.ps1 -ZipThe output standalone executable will be staged at portable/DynastyReader.exe. Copy DynastyReader.exe to any folder; it will initialize the .data/ directory automatically on launch.
To build the Android APK locally:
# Build and stage release APK (Target: aarch64)
.\build_android.ps1 -Release
# Start interactive Android dev mode with live reload
.\build_android.ps1 -DevGenerated APKs will be located at:
src-tauri/gen/android/app/build/outputs/apk/
GitHub Actions automatically builds and publishes release binaries for all supported platforms whenever a version tag (v*) is pushed:
- Windows: Portable standalone executable (
DynastyReader.exe) - Linux: Universal AppImage (
DynastyReader-x86_64.AppImage) and Debian package (.deb) - Android: Native ARM64 APK (
DynastyReader-arm64-v8a-release.apk), Universal APK (DynastyReader-universal-release.apk), and Google Play Bundle (.aab)
Development assistance provided by:
- Gemini 3.5, 3.6, 3.7, and 3.8
- DeepSeek V4 Flash 0731
Distributed under the MIT License. See LICENSE for details.
DynastyReader is an independent open-source project and is not affiliated with Dynasty Scans.
Yuri shall conquer the earth!







