Skip to content

PlainShelf

Go Reference License Go Report Card

PlainShelf is a local-first personal reading library for plain text books.

It is designed for single-user local usage, with a filesystem-first data model and a web-based reading interface.

Pre-alpha

PlainShelf is currently in pre-alpha / early development. APIs, data layout, and UI behavior may still change.


Goals

  • Manage and read TXT books
  • Keep user data in local, human-readable files
  • Use stable internal book IDs independent from display titles
  • Provide a local web UI for browsing, importing, organizing, and reading
  • Keep runtime state rebuildable
  • Stay friendly to backup tools and Git-based workflows

PlainShelf is currently TXT-focused. Other text-like formats may be explored later, but plain text reading is the primary use case.


Non-goals

The following are not planned for the current v1 scope:

  • EPUB support
  • PDF support
  • CBZ / CBR support
  • DRM formats
  • OCR
  • Multi-user support
  • Cloud sync
  • Public sharing links
  • Plugin system

PlainShelf is not intended to be a full Calibre replacement.


Project Structure

cmd/
└─ plainshelf-srv/  # local server entrypoint

shelf/              # core library package
server/             # local HTTP server implementation
frontend/           # Vue web frontend
internal/           # internal shared utilities
desktop/            # experimental Wails desktop client

The current primary development focus is shelf, server, and frontend.


Next Steps

  • Getting Started — run PlainShelf locally in minutes
  • Data Model — understand the filesystem-first shelf layout
  • Layers — organize books with a flexible layer hierarchy