← Projects
// Project

Lab Notebook — this site

Shipped· 1 min read

The static site you're reading — a fast, zero-JS-by-default portfolio and research log with content collections, tag filtering, and static search.

View repository ↗


Problem

I wanted one place to think in public: short research notes and longer project write-ups, in a design that stays out of the way. It had to be fast, own its own content (plain Markdown files, no CMS), and cost nothing to run.

Architecture

A fully static Astro site. Content lives in two type-checked collections — research and projects — validated by Zod schemas at build time. Pages are zero-JS by default; the only client-side JavaScript is a small tag filter and one React island (the animated agent-loop diagram on the home page).

src/content/{research,projects}/*.{md,mdx}
        │  (glob loader + Zod schema)

   content collections ──▶ Astro pages ──▶ static HTML (dist/)

                              Pagefind indexes dist/ (postbuild)

                                     Cloudflare Pages (CDN)

Stack

Outcome

Shipped. The site builds to static HTML, searches without a server, and targets a Lighthouse score of 95+ across the board. Adding a note is one Markdown file; adding a project is one MDX file — then git push, and Cloudflare rebuilds.

Read how it’s built and how to add content in the repository’s README.md and CONTENT_GUIDE.md.