Self-hosted e-book and audiobook management system planning workspace.
  • Go 72.7%
  • TypeScript 18.2%
  • Shell 6.1%
  • CSS 2.5%
  • Dockerfile 0.2%
  • Other 0.2%
Find a file
2026-06-19 09:08:36 -07:00
.vscode Initialize Library Manager planning workspace 2026-06-10 13:20:14 -07:00
cmd Release v0.2.8 Docker healthcheck 2026-06-19 09:08:36 -07:00
db Fix v0.2.0 upgrade metadata wiring 2026-06-17 15:35:06 -07:00
docs Release v0.2.8 Docker healthcheck 2026-06-19 09:08:36 -07:00
fixtures/test-library Complete scanner dry-run inventory foundation 2026-06-10 16:41:41 -07:00
internal Release v0.2.8 Docker healthcheck 2026-06-19 09:08:36 -07:00
scripts/proxmox Remove fixture seed app surfaces 2026-06-17 15:44:23 -07:00
test Add acquisition foundation 2026-06-12 14:23:24 -07:00
.dockerignore Add Pagemaster v0.1.0 lab release foundation 2026-06-16 16:34:41 -07:00
.gitignore Release v0.2.6 output profile controls 2026-06-18 16:09:36 -07:00
AGENTS.md Add Pagemaster v0.1.0 lab release foundation 2026-06-16 16:34:41 -07:00
Dockerfile Release v0.2.8 Docker healthcheck 2026-06-19 09:08:36 -07:00
go.mod Add SQLite scanner persistence checkpoint 2026-06-11 08:58:13 -07:00
go.sum Add SQLite scanner persistence checkpoint 2026-06-11 08:58:13 -07:00
library-manager.code-workspace Initialize Library Manager planning workspace 2026-06-10 13:20:14 -07:00
Makefile Release v0.2.6 output profile controls 2026-06-18 16:09:36 -07:00
package-lock.json Release v0.2.8 Docker healthcheck 2026-06-19 09:08:36 -07:00
package.json Release v0.2.8 Docker healthcheck 2026-06-19 09:08:36 -07:00
README.md Release v0.2.8 Docker healthcheck 2026-06-19 09:08:36 -07:00
VERSION Release v0.2.8 Docker healthcheck 2026-06-19 09:08:36 -07:00

Pagemaster

Prototype workspace for a self-hosted e-book and audiobook acquisition, normalization, and organization system.

The repo/module name is still Library Manager, but the first operable lab release is branded as Pagemaster.

The current implementation has a Go backend with SQLite persistence, configured storage roots, persisted output profile controls, metadata provider records, generic Newznab/Torznab/Prowlarr-compatible indexer setup with redacted validation, wanted-item search, release-candidate persistence, SABnzbd/qBittorrent handoff, completed-download import planning, configured-root scans, Audiobookshelf plus Grimmory ebook organization dry-runs, copy-only apply/audit plumbing, and a React/Vite Pagemaster UI served by the Go app.

Goals

  • Manage e-book and audiobook libraries from local storage.
  • Track metadata, editions, series, authors, narrators, tags, and collections.
  • Support acquisition through Usenet, torrent, direct-source, and manual incoming-folder workflows.
  • Support safe imports, duplicate detection, metadata cleanup, and predictable organization.
  • Prepare clean media libraries for downstream apps such as Grimmory and Audiobookshelf.
  • Build toward a self-hosted web app with clear operator docs.

Current Commands

The Makefile uses .tools/go/bin/go when a repo-local Go install is present, otherwise it falls back to go on PATH.

make build
make check-large-scan
make check-organization
make check-persistence
make docker-build
make frontend-build
make frontend-check
make prototype
make test
make scan-fixtures

make scan-fixtures runs the current Go read-only scanner against fixtures/test-library and prints a JSON dry-run discovery report with candidate grouping, metadata evidence, duplicate signals, and a non-destructive import plan.

make check-large-scan creates a temporary 30,000-file synthetic library outside the repo and verifies the scanner can process it.

make check-persistence creates a temporary 30,000-file synthetic library, scans it, applies the SQLite schema to a temporary database, and persists the scan report for database scale validation.

make check-organization runs the fixture scanner and builds non-destructive Audiobookshelf and Grimmory ebook organization dry-run plans.

make frontend-check type-checks the React/Vite UI.

make frontend-build builds the React/Vite UI into the embedded Go asset directory.

make build builds the frontend and writes a local dist/pagemaster binary.

make docker-build builds the planned packaged lab image as pagemaster:$(cat VERSION). The fast-moving LXC prototype currently reports v0.2.8.

make prototype starts the local Go web app on http://127.0.0.1:8090 by default. It creates data/library-manager.db, serves the Pagemaster UI, lets you configure roots/providers/indexers/download clients/output profiles, search wanted items, hand selected releases to a matching downloader, turn completed downloader paths into reviewable import plans, scan configured source roots, bulk-approve ready organization actions, and copy approved operations into the selected profile's managed output root with audit records. Override PORT, DATA_DIR, or MANAGED_OUTPUT_ROOT as needed:

PORT=8091 DATA_DIR=/tmp/library-manager-prototype MANAGED_OUTPUT_ROOT=/tmp/library-manager-managed-output make prototype

Planning Docs