Personal website and portfolio for Cyan.
Warning
Redesign in progress. Some pages may be incomplete or broken.
Source for thayn.me, built without frameworks or bundlers.
The entire build is a single Node.js script (build.js) that compiles
Handlebars templates and Markdown into static HTML/CSS/JS, deployed on Netlify.
Three production dependencies: front-matter, handlebars, marked.
- Capsules are self-contained components (HTML + CSS + JS) that compose into
pages. See
src/capsules/for the header, footer, ambient background, etc. - Blog posts are Markdown with YAML frontmatter, syndicated to Mastodon and Bluesky via Bridgy on deploy.
- i18n supports English and Toki Pona with client-side language switching.
- Edge functions block AI crawlers. Serverless functions proxy Last.fm data and fetch webmentions.
Requires Node.js >= v24.
npm install
npm run dev # build + serve at localhost:3000
npm run build # build only (outputs to ./public)
npm run format # prettier- Code: AGPL v3
- Content (text, images, media): CC BY-SA 4.0
If you reuse content, please attribute and keep derivatives under CC BY-SA 4.0.