How this site checks itself

I build my own site the way I build client sites. The rules are checked automatically, and every number says where it came from.

Why bother

A portfolio is a set of claims. Most of them are numbers, and most portfolios treat those numbers as words on a page: typed once, never checked, quietly rounded up over the years. Here every figure comes from one record. Each entry carries the claim, where it came from, and whether I can defend it in an interview today. If a number is missing or unconfirmed, the page cannot be published with a blank where the number should be.

The checks below run on the finished site, not the draft, so nothing can slip in on the way out. And I don't trust a check until it has failed: I plant the mistake it exists to catch and watch it get caught. The check for repeated copy earned its keep on its first run, when the homepage and the work index turned out to share 43% of their sentences.

The checks this site runs on itself

Read from the test file when this page was built. Change the file and this list changes with it.

tests/content.test.mjs14 checks
  1. every page has exactly one h1
  2. every page has a meta description
  3. every image carries meaningful alt text
  4. no placeholder or template rot ships
  5. every internal link resolves to a built page or a public file
  6. no two pages share more than 40% of their eight-word sequences
  7. every fact rendered on a page is marked confirmed
  8. anonymised clients never enter the build
  9. the teardowns tab only ships once three teardowns exist
  10. nothing is still owed before launchruns at launch, 4 still owed
  11. every referenced image actually exists
  12. every work card shows an image or the typeset fallback
  13. every page has a social image that exists
  14. titles and descriptions fit a search result
  15. every page carries structured data naming the person

Every number on this site, with its source

Confirmed means I can defend it in an interview today.

src/data/facts.ts13 confirmed

Numbers I still owe

These aren't in hand yet. The site won't pass its launch check until I go and get them.

src/data/facts.ts4 owed

What it's built with

Astro, a tool that turns content into plain fast pages, served from Cloudflare's network. Inter for everything you read, a typewriter face only where the site is showing you its own machinery. Images are resized when the site is built, and a missing one stops the build. The checks run with nothing more than Node's built-in test runner. No visitor tracking yet.