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.