- Go 72.7%
- TypeScript 18.2%
- Shell 6.1%
- CSS 2.5%
- Dockerfile 0.2%
- Other 0.2%
| .vscode | ||
| cmd | ||
| db | ||
| docs | ||
| fixtures/test-library | ||
| internal | ||
| scripts/proxmox | ||
| test | ||
| .dockerignore | ||
| .gitignore | ||
| AGENTS.md | ||
| Dockerfile | ||
| go.mod | ||
| go.sum | ||
| library-manager.code-workspace | ||
| Makefile | ||
| package-lock.json | ||
| package.json | ||
| README.md | ||
| VERSION | ||
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
- Project plan
- Roadmap
- Architecture
- Data model
- Decisions
- Branding
- Codex handoff
- Docker deployment
- Proxmox LXC testing install
- v0.1.0 release plan
- v0.2.8 Docker healthcheck notes
- v0.2.7 acquisition milestone notes
- v0.2.6 output profile controls notes
- v0.2.5 completed-download import notes
- v0.2.4 release display fix notes
- v0.2.3 Readarr-style navigation notes
- v0.2.2 CSRF refresh notes
- v0.2.1 cleanup notes
- v0.2.0 lab refresh notes