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.