Papyrus is an open-source, cross-platform application for managing and reading books. It supports both physical and digital book collections across Android, iOS, Web, Windows and Linux. The application features an integrated book reader, flexible organization tools, reading statistics, progress tracking, supports various file storage back-ends and cross-device synchronization via a self-hostable server.
Many reading applications offer partial solutions but fall short on essential features, platform availability or user experience. Papyrus aims to deliver a comprehensive, privacy oriented solution that:
- Works offline-first with optional cloud synchronization
- Supports self-hosting for complete data ownership
- Provides a unified experience across all popular platforms
- Offers extensive customization for different reading preferences
| Category | Features |
|---|---|
| Reading | Integrated viewer for EPUB, PDF, MOBI, AZW3, TXT, CBR, CBZ |
| Organization | Shelves, tags, topics, custom filters, advanced search |
| Annotations | Highlights, bookmarks, notes with export capabilities |
| Progress | Reading time tracking, page/percentage progress, statistics |
| Goals | Reading goals (books, pages, time) with streak tracking |
| Sync | Cross-device synchronization via self-hostable server |
| Storage | Multiple backends: self-hosted, Google Drive, WebDAV, S3 |
| Accessibility | E-ink optimization, dark/light themes, customizable fonts |
- Android
- iOS
- macOS
- Linux
- Windows
- Web
- Flutter SDK 3.x: Installation guide
-
Clone the repository
git clone git@github.com:PapyrusReader/client.git cd client -
Install dependencies
cd client flutter pub get -
Run the application
# Android/iOS (with connected device or emulator) flutter run # Web flutter run -d chrome # Desktop flutter run -d windows # or: macos, linux
See PapyrusReader/docs.
| Layer | Technology |
|---|---|
| Frontend | Flutter / Dart |
| Backend | FastAPI / Python |
| Database | PostgreSQL |
| Cache | Redis |
| File storage | Multiple (e.g., Google Drive, S3, OPFS, self-hosted) |
-
Fork and clone the repository
-
Install git hooks for code quality checks:
./scripts/setup-hooks.sh
This installs a pre-commit hook that runs
dart formatanddart analyzebefore each commit.
-
Create a feature branch:
git checkout -b feature/your-feature-name
-
Make your changes and ensure quality checks pass:
dart format . dart analyze flutter test
-
Commit your changes and push:
git commit -m "feat: description of your changes" git push origin feature/your-feature-name -
Open a pull request
| Repository | Description |
|---|---|
| server | Back-end for self-hosted sync and file storage |
| website | Landing page |
| docs | Documentation |
