The personal site of Kaylee Williams — founding engineer at Inth (YC P26) and co-author of c15t, the open-source consent layer.
It's a personal site — the live version is the real story. This is just how it's built and how to run it.
- Privacy-first by design. No cookie banner because there are no tracking cookies — fitting for someone who builds consent infrastructure for a living.
- Mostly static, selectively dynamic. Framework-free Astro for everything; a single Svelte 5 island powers the
/recordscrate. - Live, not hardcoded. OSS activity, GitHub stars, npm downloads, the contribution graph, and a Discogs record collection are all fetched live — with baked-in snapshots so the site never breaks when a token or an API is missing.
- Agent-readable. Every page has a Markdown mirror, plus
/llms.txt,/llms-full.txt, content negotiation, and dynamic OpenGraph images. (Details below.) - Fast on purpose. Lighthouse runs are checked in under
bench/.
- Astro 7 in
serveroutput, deployed via the Vercel adapter (with a Node adapter fallback for self-hosting). - Svelte 5 for the one interactive island (
/records). - Tailwind CSS 4 via the Vite plugin.
- TypeScript throughout.
- Biome (with the Ultracite preset) for lint + format.
- Bun as the package manager.
- Vercel Analytics + Speed Insights for privacy-friendly metrics.
Prerequisites: Bun and Node.js 24+ (see .nvmrc).
bun install
bun run devOpen http://localhost:4321. No environment variables are required — live data falls back to checked-in snapshots, so the site renders fully out of the box.
| Command | Description |
|---|---|
bun run dev |
Start the Astro dev server. |
bun run build |
Production build (Vercel adapter). |
bun run build:node |
Production build with the standalone Node adapter. |
bun run start |
Build with the Node adapter and serve on 127.0.0.1:4321. |
bun run fmt |
Lint + format with Biome (--write). |
All optional — each one upgrades a live data source, and the site degrades gracefully without it.
| Variable | Used for |
|---|---|
GH_TOKEN / GITHUB_TOKEN |
Higher GitHub API rate limits for OSS activity, stars, and the contribution graph. |
DISCOGS_TOKEN |
Higher Discogs rate limit + access to the private record collection on /records. |
For local development, drop them in a .env file (gitignored). In production they're set as Vercel project env vars.
content/ Markdown + JSON content collections
experience/ Roles (Inth, Everfund)
projects/ Featured work (c15t, cookiebench, …)
site/ Hero, profile, socials, person schema
lib/ Data fetching (GitHub, npm, Discogs), caching, Markdown + SEO helpers
src/
components/ Astro UI + the Svelte records crate
layouts/ BaseLayout
pages/ Routes + their .md mirrors and machine-readable endpoints
styles/ Global CSS / Tailwind layer
public/ Static assets + AGENTS.md
bench/ Isolated Lighthouse benchmark harness
| Route | Page |
|---|---|
/ |
Home — hero, current work, OSS activity, stats |
/about |
About |
/projects |
Featured projects |
/experience/[slug] |
Individual roles |
/connect |
Linktree-style contact page (/contact → /connect) |
/connect/share |
Shareable QR code |
/records |
Discogs record collection (Svelte island) |
The site is built to be summarized correctly by LLMs and answer engines — see public/AGENTS.md. Every page exposes a Markdown twin alongside the HTML:
/llms.txt— concise index in the llmstxt.org format./llms-full.txt— the full profile inlined, including live OSS activity./index.md,/about.md,/projects.md,/connect.md— per-page Markdown mirrors with YAML frontmatter.- Content negotiation — any page also answers
Accept: text/markdownwith its mirror. /sitemap.xml+/sitemap.md, and dynamic per-page OpenGraph images.
curl https://www.kaylee.dev/llms.txt
curl -H "Accept: text/markdown" https://www.kaylee.dev/aboutbench/ is a self-contained Lighthouse harness, deliberately kept out of the app's dependency graph. It measures cold build time, output size, and per-page Lighthouse metrics; before/after runs live in bench/results/.
cd bench && bun install && cd ..
node bench/bench.mjs <label> # writes bench/results/<label>.jsonDeployed on Vercel from main. The Node adapter (bun run build:node) produces a standalone server for self-hosting anywhere else.
Personal project — all rights reserved. Feel free to read the code for ideas; please don't ship it as your own personal site.