About this demo
Eve’s Library is a demo, not a real library collection. It exists to show what an adopter gets from the libcatalog framework and its Hugo module: a faceted, accessible, multilingual-capable discovery site with static full-text search — and no backend to run.
How it’s built
The pipeline is deliberately boring, which is the point — every stage is a plain build artifact you can inspect:
- BIBFRAME / bibliographic records are the source of truth (the framework models Works, Instances, contributors, controlled subjects, and identifiers as a graph).
- The projector (
lcat project) flattens that graph into two static JSON files —catalog.json(one entry per Work) andfacets.json(precomputed facet counts). - The Hugo module mints one page per Work from
catalog.jsonvia a content adapter — no per-record markdown — plus the facet navigation, Work detail pages, and accessible chrome. This site imports the module the way any adopter would and only supplies config, data, and light branding on top. - Pagefind indexes the built HTML after Hugo runs, giving real ranked, per-language, CJK-capable full-text search that ships as static files.
What’s on display
- Works and Instances. Each Work clusters its editions (ebook / audiobook / physical); a Work with multiple formats appears under each.
- Controlled subjects vs. tags. Subjects are authority-controlled (LCSH, Homosaurus)
with resolving
↗links and localizable labels; genre tags are free strings. Both dimensions are faceted, side by side. - Faceted browsing by subject, contributor, format, language, and classification,
with counts straight from
facets.json. - Accessibility. The module targets WCAG 2.1 AA — skip link, focus styles, heading order, and keyboard-navigable search.
The data
The catalog is Eve’s real reading history, sourced from
Hardcover — the books on her Read shelf — through a
reproducible fetch-and-project pipeline (npm run data:refresh). Genre tags come across
as free text; the build then promotes the mappable ones into controlled subjects (LCSH
and Homosaurus) while leaving quirkier tags as-is, so both dimensions appear side by
side. Covers, ratings, and read dates come from Hardcover too.
Source
- Framework + Hugo module: https://github.com/freeeve/libcatalog
- This adopter site: a plain Hugo site that imports the module.