A static-first Next.js 16 site
Two seasonal themes chosen per request, fully prerendered, with a contact form that emails you through Resend behind Cloudflare Turnstile.
A static-first Next.js 16 site
Two seasonal themes chosen per request, fully prerendered, with a contact form that emails you through Resend behind Cloudflare Turnstile.
A locked-down origin
Traefik with Let’s Encrypt certificates, reachable only from Cloudflare. SSH only through a Cloudflare Tunnel.
Your own Git forge
Gitea on PostgreSQL 18 with an Actions runner and a container registry.
Push to deploy
Push to main: tests, image, live in under four minutes — with automatic
rollback if the new version isn’t healthy.
Each part builds on the last. If you are recreating the setup, follow it in order; if you are here for one problem, the lessons page is a list of every surprise, each linked to where it happened.