How This Site Is Built
A short reference for what's actually running this site, for anyone curious about the stack behind it.
Stack
What It Runs On
Astro 7TypeScript (strict)Tailwind CSS 4Svelte 5Pagefind
Architecture
Content & Structure
- Two Zod-validated content collections,
projectsandwriting, power every case study and post through Astro's Content Collections API. No CMS, just Markdown files checked into the repo. - Theming uses a
data-themeattribute and CSS custom properties, not Tailwind's.darkclass. Dark mode is the default; the toggle persists tolocalStorage. - Icons and social-share (OG) images are generated procedurally at build time with node-canvas, not hand-drawn or committed to git.
- Search is static: Pagefind indexes the built HTML after every build and ships its own small WASM search index, no server or third-party search API involved.
Pipeline
CI/CD
- The repo has two git remotes: a self-hosted OneDev server and GitHub, which is the actual deploy target.
- Pull requests run linting, format checks, type checking, and a full production build before merge.
- Pushes to
masterbuild the site, run a Lighthouse CI budget check, then deploy to GitHub Pages. A failing budget blocks the deploy. - Commit messages are enforced as Conventional Commits via a Git hook.
Typefaces
Fonts
Space GroteskJetBrains MonoIBM Plex Sans
All three are SIL OFL licensed and self-hosted as variable fonts, no Google Fonts CDN.