Book 38 · Patriola’s Guide to Claude
Static Site Generators
Data-driven Eleventy author sites via a single JSON file. Thirty-three novels, three series, one record per book — every time a title ships, zero HTML files change.
One JSON file, five views, zero hand-edited HTML
Thirty-three books across three series. Every time a new title ships, zero HTML files change. This book documents building and deploying a data-driven author site with Eleventy, Nunjucks, and a single books.json file that is the only place content ever lives. The worked example is a live site for a working novelist — 33 novels, 3 series, a thumbnail pipeline, and an SFTP deploy script. It was built with Claude and runs in production.
Every chapter is one architectural decision: why Eleventy over Gatsby or Hugo for this use case, how to design a JSON schema that survives every query your templates need before you write a line of template code, which Eleventy filters belong in config versus templates, how to generate WebP thumbnails with a center-crop and derive the thumbnail URL from the cover path at render time so you never store the same path twice, and how to deploy over SFTP with a dry-run pass and a single-connection discipline that doesn't hammer a shared host.
The add-a-book workflow is the payoff: one JSON entry, one image, one build, one deploy. Claude helps write the entry, check the slug, and read the dry-run output — the human approves and ships. The code is real. The site is live. This is what the architecture looked like, decision by decision.
What you’ll learnEvery layer, from schema to production hardening
- Picking a generator — Why Eleventy won on constraints rather than charm, and the five requirements that eliminate the popular alternatives.
- The data layer — Designing a series-keyed
books.jsonschema with Claude, stress-tested in conversation before a single template depends on it. - The filter library — Which transforms belong in Eleventy config versus templates, and the null-handling decisions that keep a sort stable.
- The template layer — A series loop that names no series, and keeping quick
ifs out of the markup for good. - The thumbnail pipeline — Center-cropping covers to WebP and deriving the thumbnail path at render time instead of storing it twice.
- The deploy script — A paramiko SFTP deploy with a dry-run pass and a single-connection discipline that doesn't hammer a shared host.
- Adding a book — The full workflow, start to finish: one JSON entry, one image, one build, one deploy.
- Production hardening — A 404 page, a post-build smoke test, and the habits that keep a data-driven site honest.
A preview
The flat-HTML site had quietly become a database with no schema and no query layer, where every row was a hand-copied paragraph of markup and the only integrity check was remembering which files you'd touched.
isLatest flag for the hero slot. A TODO_AMAZON_URL sentinel for books in flight, so an in-progress title can sit in the catalog with its cover and teaser and simply show no buy button until the real link replaces the placeholder. The keyed object costs a little more nesting up front and buys you a template that never hardcodes a series name.
Builders maintaining a catalog that grows
This book is for someone who already runs sites from a terminal — who deploys over SFTP, reads a stack trace without flinching, and has felt the specific dread of a maintenance task that scales with the number of files instead of the size of the change. The build documented here is real and shipped: a thirty-three-novel author site running on Eleventy, with a series-keyed books.json as the single source of truth, a Nunjucks template layer, a Python thumbnail pipeline, and a paramiko deploy script that verifies what it sent.
A longer excerpt is available to newsletter subscribers.
More from Patriola
New books in this series
One short email per book launch.