← FABLE·25  /  GUIDE

How this was actually made

Twenty-five websites, one autonomous model, three review passes each. This page is the honest recipe — short enough to read, complete enough to reproduce.

01The brief

A human (Brendan) gave Claude Fable 5 one instruction: build 25 fundamentally different websites that demonstrate design range — advanced visuals, bold typography, real interactivity — then deploy them and document the process. No further art direction was given. Every concept, palette, typeface pairing, line of copy and line of code on this domain was produced by the model, working alone in a terminal (Claude Code) on a Windows machine.

02The constraints (self-imposed)

03The loop, per site

  1. Concept. Pick an aesthetic direction from a 25-slot plan (kept in a STATE.md so progress survives long sessions), chosen to maximise distance from every other site.
  2. Build. Write the entire site in one pass — structure, copy, styles, and whatever engine it needs (fragment shader, particle sim, L-system, 3D scene).
  3. Pass 1 — look at it. The model drives a real browser (Playwright), screenshots the page at desktop size, and critiques its own work: composition, contrast, broken layouts, dead zones.
  4. Pass 2 — fix and complexify. Apply the critique: rebalance the hero, deepen the shader, fix the bug the screenshot exposed. Re-screenshot key sections and interactions.
  5. Pass 3 — the fine comb. Mobile viewport, console errors, favicons, reduced-motion fallbacks, scroll-restoration quirks, form-state restoration quirks. Ship only when clean.
The honest bit: the screenshots caught real bugs on almost every site — an invalid hex colour that silently killed a sunset, a seal stamp positioned against the wrong ancestor, words breaking mid-letter, a camera that clipped the product. Self-review isn't theatre; it's where half the quality comes from.

04The techniques, per site

SiteCore TechThe Trick Worth Stealing
01 SolsticeRaw WebGL2 fragment shaderAurora = domain-warped FBM noise masked into curtains; two octaves of vertical striation sell the “pleats”.
02 Grotesk™Variable fonts + rAF loopPer-letter font-variation-settings driven by cursor distance — type as a force field.
03 Meridianthree.js, PMREM environmentThe whole watch is primitives (torus bezel, box indices). Scroll lerps the camera between keyframe poses; hands read the system clock.
04 VerdantSeeded recursive L-systems → SVGAnimate growth with stroke-dashoffset delays keyed to branch depth. Same seed, same plant, forever.
05 Cathode/OSDOM terminal + CSS CRT stackScanlines, RGB aperture grille, vignette and flicker are four stacked overlay divs. The donut is the classic ASCII torus, 40ms ticks.
06 Folio Nº6Pure CSS editorial layoutCSS columns with a column rule, a 5-em drop cap, and a sunset “photograph” that is one linear-gradient.
07 SingularityCanvas 2D, 12k typed-array bodiesCentral + cursor gravity with soft clamps; translucent fill instead of clear gives free motion trails.
08 Hotel AureliaGenerated SVG ornamentDeco sunbursts are for-loops; line-drawing entrance via dasharray. The elevator needle is one CSS-transitioned rotation.
09 間 · MaCanvas ink physicsBrush width inversely tracks pointer speed while an “ink load” decays — slow strokes bleed, fast strokes dry out.
10 ChromadripSVG goo filter + gradient chromeLiquid chrome text = hard-stop metal gradient in background-clip:text; goo = blur + contrast colour-matrix filter.

Sites 11–25 are in the atelier; this table grows as they land.

05Deploying (do this yourself)

Everything is static, so hosting is nearly free effort. This collection ships to Cloudflare Pages straight from a folder:

# one folder, one file per site:
dist/
  index.html            # the hub
  guide/index.html      # this page
  01-solstice/index.html … 25-loom/index.html
  vendor/three.module.min.js

# create the project once, then deploy on every change:
wrangler pages project create fable-25 --production-branch=main
wrangler pages deploy dist --project-name=fable-25

Netlify works identically (netlify deploy --dir=dist --prod). No build step, no framework, no lock-in.

06Run the same play

If you want to reproduce this experiment with your own agent, the prompt shape that works is:

“Build N websites, each fundamentally different. For each: commit to one bold aesthetic, write it as a single self-contained HTML file, then do three iteration passes — screenshot it in a real browser, critique it like a design director, and fix what you find, including on mobile. Never repeat a display typeface. No stock assets — generate every visual procedurally. Deploy the folder and write a guide explaining how.”

The three passes are the load-bearing sentence. The first draft is competent; the screenshots are where a competent site becomes a considered one.