Colophon
How this site works, so the claim that every number is real is itself checkable.
The shape of it
A GitHub Actions cron job runs daily, fetches each API, validates the response against a schema, writes JSON into the repo and commits. Vercel sees the commit and rebuilds. The site is fully static: no runtime API calls, no client-side keys, no cold starts. The browser only ever reads JSON that’s already in the repo.
Because every run commits, the git history is the database — and it’s public, so you can check whether a number moved when I said it did. Each run also writes a dated snapshot to data/snapshots/, pruned after 18 months.
Sources
| Source | Provides | File | Last run |
|---|---|---|---|
| GitHub | Commits, contribution calendar, repos | code.json | ok |
| Dub | Link clicks on letswandr.app | wandr.json | ok |
| GitHub | Live status of each open-source PR | learning.json | ok |
What happens when a source breaks
- A failed fetch leaves the last good JSON untouched and marks that source as failed. The lane says it couldn’t reach the API rather than rendering an empty state that implies nothing happened.
- A response that returns 200 but doesn’t match its schema is treated as a failure. Garbage that validates is worse than an outage.
- One dead API degrades one lane. The workflow still succeeds and the other lanes still update.
- Every number carries the date it was fetched. A stale number is shown as stale, not quietly re-dated.
Hand-written parts
Two things can’t come from an API: the Wandr release log and kernel/reading list, and the four lines on /now. The first is constrained instead — every entry must carry a link to something that proves it, and a CI check fails the build if one doesn’t. The /now stamp comes from the file’s git commit date, so it can’t claim to be fresher than it is.
Read it
Built with Next.js on Vercel. Data last checked 13 Sep 2026.