About
A place to learn in public, document personal projects I build in my spare time, and publish small standalone tools. The audience is mostly future me, a handful of friends, and whoever else happens to read it.
How it's built
This site was built with Claude Code as a development partner. It's an Astro static site with zero client-side JavaScript, one hand-written CSS file, and no cookies. The code lives on GitHub: pkeppeler/personal-site.
Stack:
- Astro (static site generator)
- pnpm (package manager with strict security defaults)
- Shiki (build-time syntax highlighting)
- Cloudflare Workers Static Assets (hosting)
Tools under /tools/ opt into a service worker so they can be installed and used offline. That stack is:
- @vite-pwa/astro (auto-generated service worker, per-tool manifests)
- marked (markdown parsing, used by the markdown viewer)
- DOMPurify (HTML sanitization for rendered markdown)
Cloudflare's server-side Web Analytics is enabled. It counts aggregate page views from the CDN request logs Cloudflare already keeps to serve the site. No cookies. No client-side JavaScript. No personal data collection.
Content badges
Every post carries one of these badges at the top:
Written by me start to finish. Claude may have caught typos, but the prose, structure, and argument are mine.
Claude interviewed me about the project, drafted from my answers, and iterated with me on edits. The claims and opinions are mine; the initial prose is Claude's.