Loading the documentation…
Prepared views
Named starting points — New Releases, Short Stories, whatever fits the catalog — composed in the Librarian, one click for the reader.
jpl · jay pscot library
A self-hosted, tag-driven library for authors — books, novellas, short stories, and articles organized by ideas rather than shelves. One catalog, prepared views, reader-controlled refinement by tag, author, and series — and a Librarian's desk behind it. Framework-free PHP + SQLite; no Composer, no Node, no build step.
$ curl -O https://smisco.biz/jpl/jpl.zip
the proof
pscot.com is not a demo rig — it is this library, live, serving Jay Pscot's books, stories, and articles to readers. Every screenshot on this page is that instance, doing its day job.
the reader's side
Prepared views are starting points, not silos. Tags, authors, and series stack: every selection narrows the shelf, every removal widens it, and text search runs across titles, subtitles, summaries, author names, and series names. Refinements survive a change of view, update without a page reload, and live in the URL — so any shelf a reader builds is a link they can send, one click away beside the results heading.
behind the desk
The admin side lives at /desk and speaks library. The Circulation Desk is the dashboard: catalog totals, authors, series, tags, views, visitors, Reads, Previews, Downloads, and Amazon hits — all first-party, no third-party analytics. Authors and series are records, not free text: each has its own page, and selecting a row lists every catalog entry filed under it. The catalog itself filters by author, series, and status, or searches across all of them. Entries carry covers, grouped tags with quick-add, a formatted summary, and two files: the public document — the exact, complete file visitors receive (PDF, EPUB, Markdown, HTML, Word, and more, up to 50 MB) — and an optional Librarian-only file of any type that never gets a public route. Per work, the Librarian decides what visitors may do: open the public document (labeled Preview or Read), download it, or follow an Amazon link — each independent.
what you get
Named starting points — New Releases, Short Stories, whatever fits the catalog — composed in the Librarian, one click for the reader.
Grouped tags (format, genre, subject) with quick-add; every tag narrows, every removal widens.
First-class records, not free text. A work can belong to several of either; both filter the public library and both get their own Librarian page.
Tags, authors, series, and text search across titles, summaries, and names all live in the URL; a link icon and Copy URL beside the results hand over the exact shelf.
Each entry can carry a private attachment — a full manuscript, a review draft, any file type — stored outside the public site and opened only at the Desk.
Covers front and back, subtitles, series, bylines, summaries — each work with its own page and slug.
A small, enforced subset of HTML — emphasis, quotes, rules, code. Attributes stripped, unknown tags removed, sanitized on save and on display.
Visitors get the exact file the author prepared, never trimmed, served from a separate reader host — so an HTML reader's scripts and saved settings work, and the Librarian's session stays out of reach.
Commercial works link out to Amazon — independent of read and download permissions.
Reads, previews, downloads, visitors — hashed visitor tokens, no IPs stored, nothing sent to third parties.
SQLite database, Librarian-only files, covers, and backups live outside the webroot; public documents sit behind a reader route that never exposes their storage paths.
One setting sizes the whole library and desk, 80–140%. Installable as an app, with the library's own mark and colors.
requirements & install
Private data (the SQLite database, Librarian-only files, covers, backups) lives beside — not inside — the webroot; public documents live in the reader host's own tree. The README covers the production layout, a fresh install, and the upgrade path; upgrades copy over the existing tree and leave the catalog, tags, authors, series, files, and analytics intact.
# three site folders, HTTPS on each: # main → the library + /desk/ # docs. → the isolated document reader # desk. → a redirect to /desk/ # extracts to pscot-site/ — place it as the site tree: $ php bin/install.php # also sets up the reader host $ php bin/check.php # sign in at /desk/ and start cataloging
why it's free
The Jay Pscot Library is free — the whole of it, MIT-licensed. There is no subscription, no paid tier holding features back, and no advertising. Download it and it is simply yours to run.
If it gives your writing a home, you can leave a tip. It is a thank-you for the tool, never an obligation — and it is always appreciated.
rendered live · from README.md
The document below is the current distribution's own README — requirements, the upgrade path, and what changed in this release — fetched and rendered in your browser by md-mini.js — a sibling smisco tool. The zip also ships RELEASE.md and DESIGN.md alongside it.
Loading the documentation…