How this site is built


title: How this site is built date: 2026-07-30 excerpt: A tour of the stack behind this beige terminal of a website. tags:

  • nextjs
  • css
  • meta draft: false

This site is deliberately boring under the hood. Boring is a feature when all you want is to publish text for the next ten years.

The stack

  • Next.js (App Router, static generation)
  • MDX for posts, stored as plain files in content/posts/
  • Custom CSS — no framework, just variables
  • Vercel for hosting, deployed from git

The whole thing builds down to static HTML at deploy time. There is no database, no CMS, no server.

Reading posts at build time

Posts are read with gray-matter for frontmatter and dynamically imported as MDX modules:

export async function generateStaticParams() {
  return getAllPosts().map((post) => ({ slug: post.slug }));
}

export const dynamicParams = false;

Each post becomes a real .html file. Fast, crawler-friendly, and cheap to host forever.

The beige look

The retro feel is mostly a theme of CSS variables — swap a few values and the whole site re-skins:

:root {
  --paper: #f3ead7;
  --ink: #2e2922;
  --accent: #a33a24;
}

Monospace body text (IBM Plex Mono), a chunky display face (VT323) for headings, hard borders, hard shadows, and a faint paper-grain overlay. No JavaScript required to look good.

← back to blog