First release
Pre-releasePlainShelf v0.1.0
PlainShelf v0.1.0 is the first early-development release of PlainShelf, a local-first personal reading library for plain text books.
PlainShelf is designed for single-user local usage, with a filesystem-first data model and a web-based reading interface. This release focuses on the core server/web workflow: importing TXT books, browsing and organizing a local library, reading books in the browser, tracking reading progress, and running the app locally or through Docker.
Status: pre-alpha / early development.
APIs, data layout, and UI behavior may still change in future releases.
Highlights
- Local-first personal TXT library for single-user reading workflows.
- Web UI for browsing, importing, organizing, editing, and reading books.
- Filesystem-first shelf layout intended to keep user-owned data local and backup-friendly.
- Stable internal book IDs independent from display titles.
- Reading progress and recent reading history support.
- Layer-based organization for grouping books.
- Duplicate-content maintenance view based on current snapshot hashes.
- Snapshot viewing/editing and split configuration support.
- Cover upload, retrieval, conversion, and deletion support.
- Docker image support with a built-in health check.
What is included
Library and reader workflow
- Import TXT files into a local shelf.
- Re-encode uploaded text content to UTF-8 during import.
- Automatically create an initial snapshot for imported books.
- Detect book language during import when possible.
- Browse the local book library through the web UI.
- View, edit, and delete book metadata.
- Read book content in the browser reader.
- Save and restore reading position.
Organization and maintenance
- Organize books into layer paths.
- Create and delete layers.
- Move books between layers.
- Search books by title/comment.
- Find duplicate books by grouping matching current snapshot MD5 hashes.
- View books missing common metadata such as author, cover, and language.
- View and clear recent reading history.
Snapshots and content editing
- List book snapshots.
- View snapshot content.
- Edit snapshot content.
- Configure reader split behavior for the current snapshot.
Covers
- Get, upload, and delete book covers.
- Convert uploaded cover images to JPEG when configured.
Docker
- Multi-stage Docker build for the frontend and Go server.
- Runtime image includes a
/healthhealth check. - Default Docker config stores data under
/data. - Recommended local run command:
docker run --rm \
--name plainshelf \
-p 127.0.0.1:20000:20000 \
-v plainshelf-data:/data \
plainshelfDevelopment and testing
Recommended local verification flow:
npm --prefix frontend run build
go test ./...The frontend build must run before the Go build/test flow because the Go frontend package embeds the generated frontend dist files.
Known limitations
- This is still a pre-alpha / early-development release.
- APIs, data layout, and UI behavior may change in later versions.
- PlainShelf is currently TXT-focused. EPUB, PDF, CBZ/CBR, DRM formats, OCR, cloud sync, multi-user support, public sharing links, and plugins are not in the current scope.
- Server-side pagination is not implemented yet; the current API returns the full book list and the frontend paginates client-side.
- The CLI and Fyne GUI entrypoints are experimental and may lag behind the main server/web workflow.
- Some internal packages and commands still use the older txtlib name and may be renamed as the project stabilizes.
Upgrade notes
This is the first 0.1.0 release. There are no previous stable PlainShelf releases to migrate from.
Because PlainShelf is still pre-alpha, users should back up their shelf directory before upgrading to future releases.