Colophon

How this website is built.

Framework & Language

The site is built with Astro, a modern static-site generator. Content is authored in TypeScript and Astro components. The output is a fully static site — no client-side JavaScript framework, no runtime server. You can find the full source code and CI/CD setup at https://github.com/shaftoe/personal-website.

Styling

Theme forked from zaggonaut. All styling uses Tailwind CSS v4, processed through the @tailwindcss/vite plugin. Typography is handled by @tailwindcss/typography.

Fonts

Content

Blog posts live as Markdown files with YAML frontmatter, managed through Astro’s content collections. The changelog is parsed directly from the project’s CHANGELOG.md file at build time using marked.

Tooling

Infrastructure

Versioning and deploys are fully automated. Every push to master triggers a release workflow powered by semantic-release, which analyzes conventional commit messages, bumps package.json version, updates CHANGELOG.md, and publishes a GitHub Release.

When a new version tag is created, a deploy workflow triggers a Netlify build that runs bun run build and publishes the resulting dist/ directory to their CDN. The same workflow also runs on a schedule every four hours to keep the homepage’s Mastodon posts and blog content up to date without manual intervention.

Other Bits