PlainShelf is a local-first, single-user reading library for lightweight text content. It stores the library in human-readable files and provides web, desktop, and experimental Android clients.
Pre-alpha: APIs, data layout, and UI behavior may change. Back up your shelf before upgrading. See Data Format Versioning for what the on-disk format does and does not guarantee.
- Imports and reads plain text and Markdown books
- Imports EPUB files by converting them to plain text or Markdown
- Organizes books in nested, filesystem-backed folders
- Keeps stable book IDs when titles or folders change
- Supports covers, metadata, bookmarks, reading history, and reading stats
- Runs as a local server, a macOS desktop app, or an experimental Android client that reads from a server or straight from a shelf folder on pCloud
PlainShelf is not a Calibre replacement. PDF, comic archives, DRM, OCR, multi-user accounts, cloud sync, public sharing, and plugins are outside the current scope. The Android client can read a shelf held on pCloud, but that is a read-only storage backend, not sync: nothing is written back.
EPUB is supported at import time only: the text is extracted and stored as a
normal plain-text or Markdown book, and the original .epub is not kept.
Embedded illustrations are not imported.
On Apple Silicon macOS:
brew install --cask voilelab/plainshelf/plainshelfPrebuilt server archives and Docker images are also available. See the installation guide, then follow Getting Started.
npm --prefix frontend ci
npm --prefix frontend run build
go test ./...The Go server embeds frontend/dist, so build the frontend before running Go
builds or tests. Full setup, desktop, mobile, Docker, and test instructions are
in the development guide.
