YAJ.net: this website
The portfolio and consulting site you're reading now: a Next.js App Router build with an MDX content system, build-time search, and a hand-tuned design system.
LiveJune 2026
This site is itself a project. It's built on the Next.js App Router with a small, typed MDX content system: each collection (work, projects, services) is a folder of MDX files validated by Zod at build time, so a frontmatter typo fails the build rather than shipping silently.
A few things I cared about:
- Build-time search. A standalone script reads every MDX file and emits a static
search-index.json; the⌘Kpalette runs Fuse.js entirely in the browser. No API, no round-trip. - One design system, enforced by primitives. Spacing and type live in a fixed
modular scale;
Section/Containercomponents enforce the rhythm so individual pages stay tiny. - Privacy by default. Analytics stay dormant behind a consent banner; nothing
loads until you opt in, and a plain-language
/privacypage spells out what is and isn't collected. - Security held to a standard. A CI gate fails any change that introduces a new dependency CVE, and the codebase gets periodic multi-agent audits across security, quality, and performance.
- Runs on a small VM. It sits behind Cloudflare on a modest self-hosted box; deliberately small infrastructure for a deliberately fast site.