listsof30 production

Lists of 30: The Book Series Hub

One home for the five-book Lists of 30 arc: a series timeline, per-book chapters and buy links, and the 30 launch assets tracked in the open.

AstroTypeScriptCSS Design TokensCloudflare Pages
The series hub: each book, its formats, and where it can be bought.
The series hub: each book, its formats, and where it can be bought.
The current book on a phone, with the preorder one tap away.
The current book on a phone, with the preorder one tap away.
Four books so far, each with its chapters, formats and shop.
Four books so far, each with its chapters, formats and shop.

The books were scattered. Two published titles lived on separate Amazon pages, a third was a preorder with no home, and two more existed only as promises. The one canonical books page was a Substack post that could hold email but not a catalog. If you wanted the whole story, there wasn’t a page to send you to.

What It Is

books.listsof30.com is the one-stop shop for the entire series. The homepage opens on the next book, then steps back to show the whole arc: a vertical timeline of five books, one per decade of a life, from the 20s to a capstone that is deliberately still a promise. Below it, every book has its own page built from data, with the full chapter list, buy buttons for each format, and an editions row for the signed copies and the NFT edition.

A second page, /assets, tracks the thirty things being built to launch book three, grouped from foundation to publisher endgame with a live status on each. It is the kind of page an acquisition editor screenshots, so it is built to be screenshotted.

The Reframe

Earlier drafts called the third book “the third and final,” a triptych closing. The catalog told a bigger story: five books, one per decade, a life on a publishing schedule. That correction is not cosmetic. It is the difference between a project that ends and one that compounds, and the whole site is built around the longer arc. The framing lives in one constant so it can never drift.

The Discipline

Every link lives in one config file, and copy decisions live in one spec. A link that is not live yet renders a “coming soon” state instead of a dead end, so nothing on the page lies about where it goes. Facts that were not locked, an unwritten chapter list, an unpicked start year, stay on the page as visible bracketed placeholders rather than invented filler. Building in public means showing the seams.

It is static, with zero client JavaScript. The collapsible chapter lists use the browser’s own disclosure elements, not a framework. The design is the book brand’s own system, terracotta on warm paper, borders instead of shadows, the number thirty carried as a motif rather than decoration.

Status

Live on Cloudflare Pages at books.listsof30.com. The site was a greenfield build with no prior codebase, shipped one commit per section against a written spec, then deployed. Filling a placeholder is a one-line edit to the config or the spec, then a redeploy.

Stack

Astro in static mode, TypeScript for the book and asset data, and a hand-authored CSS token system mirrored from the brand’s canonical design files. Hosted on Cloudflare Pages. No backend, no database, no accounts. The data is the site.

Development timeline

20 logged updates over 94 days, 3 Aug 2026 to 4 Nov 2026.

  1. Newsletter opt-in on the wall formfeature

    Clemens: collect an email only when the person opts in, then add them to the newsletter by hand. The wall form gets a "Add me to the Lists of 30 newsletter" checkbox; the email field appears once it's ticked (CSS :has(), no JS; older…

  2. Wall admin at /admin/feature

    /admin/ lists pending lines with Approve (editable first), Reject, and Remove for lines already up, plus three counts: waiting, on the wall, submitted today against the 200 cap. Plain form posts, no client JS.

  3. Publisher's Pitch at /pitch/feature

    Clemens asked for a proposal-site-style walkthrough for book three, public, aimed at any publisher or agent. The ask is a three-book deal (Her Life, Its Life, A Lifetime) with an advance to write Her Life.

  4. Ship date recorded, roadmap hygienefeature

    Ship date: 2026-07-22. Recovered from the Cloudflare deployments API (1,348 deployments to date).

  5. App logo in the /assets closingfeature

    It sits beside the line on desktop and above it at 520px and below.

  6. App logo on /assetsfeature

    #25 shows the Lists of 30 App logo as its preview: Clemens's lists of 30 app logo final.png (500px, transparent), flattened onto the paper color and saved as /files/previews/25.jpg at 640px like the other previews.

  7. Asset #25 is the appfeature

    Clemens swapped #25 (30 Mistakes, still two mistakes short) for the Lists of 30 App, linked to app.listsof30.com through SITE.app. All 30 core assets are now done.

  8. Author goes straight to clemens.listsof30.comfeature

    Clemens: "I don't need duplicates." The Author nav link now points at SITE.contact. /author and /author/* 301 to clemens.listsof30.com.

Show the earlier 12 entries
  1. Author page and sibling sitesfeature

    Cross-checked clemens.listsof30.com and wanessalabs.com/projects for what the books site should show.

  2. Home page author biofeature

    Clemens asked for the two line bio and a link to clemens.listsof30.com with the logo. The placeholder in "Who writes these" is replaced with a two sentence third person bio in the press kit voice, using SITE.postsWritten.

  3. Lemon fireworksfeature

    Clemens approved it as the site's one exception to zero client JS. Decoration only: pages work with JavaScript off, prefers-reduced-motion skips it, and the listener is passive so every click still lands.

  4. Writer GPT removedfeature

    The Lists of 30 Writer GPT does not work (Clemens). Removed its /assets extra, its llms.txt line, and both /start buttons; /start's co-writer section now points at List Coach and the Lists of 30 App.

  5. Contact, Kindle price, public Chapter 0featureunverified

  6. Every asset publishablefeature

    Clemens asked for the whole board to be useful now, list changes allowed. Ten of the eleven unfinished core assets and both waiting extras now ship, each reframed around material that already existed: the 30 course emails as /course/…

  7. /assets shows the real 30feature

    What: replaced 29 bracketed placeholders and the guessed #24 with the real 30

  8. assets follow-ups (quiz, generated llms, Chapter 0)feature

    _redirects sends the old /assets/subscribers/...

  9. assets round two (green board, wall, sheets)feature

    Done squares are green. The /assets board and the category bars use --status-done instead of ink, matching the Done chip.

  10. Comprehensive Quality, SEO & Agentic Auditdocs

    Completed full 6-dimension audit and remediation pass: - Audit Scores: Lighthouse 100 Accessibility, 100 Best Practices, 100 SEO, 93 Performance. Agentic & Robot Score: 98/100.

  11. Lineage opened retroactivelydocs

    This file was created after the site shipped, not alongside it. Every entry below this line is contemporaneous.

  12. Site-anatomy exportfeature

    Read-only export: prd/lineage/roadmap plus the project page source. No vault content changed except this lineage entry and the creation of this file.

Written from this project's decision log as work happened, not afterwards. See every project →