2026 — present · Go · versioned module
sitekit
The shared Go library I extracted when my sites kept growing the same organs.
Every site I run needed the same things: admin sessions, embedded SQL migrations, an SMTP mailer, SEO plumbing (sitemaps, robots.txt), slug handling, Cloudflare Turnstile verification, Google OAuth, and build-version stamping. For a while each site had its own copy, and each copy drifted — a bug fixed in one stayed broken in the others.
sitekit is the extraction: one versioned Go module on my private GitLab that
all of them import. Its packages read like the list above — adminauth,
migrate, mailer, seo, slug, turnstile, googleauth, buildinfo —
and it deliberately stays small, with almost no dependencies of its own.
Why it earns a page
It's not a framework and never will be; each site still owns its routing, templates, and handlers. But the extraction changed how maintenance works: an auth bug is now fixed in sitekit once, and every site picks it up on its next build. New sites start from a working skeleton instead of a copy-paste of the last one — carterpeaslee grew most of these patterns originally, and the site you're reading was the first one built on sitekit from day one.