zechman.dev v2
This site. Built on Astro with a local markdown content layer, designed against my own style system — the same one that produces my resume and decks.
The brief
The previous portfolio was a Gatsby site with content spread across Ghost, Notion and Airtable. Three external services had to be up for the site to build, and none of them were the thing I actually wanted to work on.
v2 had one rule: the site should be a design system exercise, not a CMS integration exercise.
Approach
Static by default
Astro with output: "static". Every route is a real URL and a real file; the
only JavaScript that ships is the handful of islands that genuinely need it — the
theme toggler, the project filters, the scroll-spy rail.
Content in the repo
Content moved out of Ghost and Notion into local markdown, validated by Zod schemas at build time. A malformed project entry fails the build rather than rendering an empty card.
One style system
The token set here is the same one that produces my resume and decks, so the whole set of artifacts stays in step without anyone reconciling them by hand.
Results
Builds are hermetic, content is versioned alongside the code it renders, and the site has no runtime dependency on a service I don’t control.



