ONLINE  ·  HAYTHAM ICHAHBANE / ENGINEER  ·  CMN
← cd ../
Sun Jun 14 2026 00:00:00 GMT+0000 (Coordinated Universal Time)#meta1 min read270 words

Colophon — how this site is built

The stack, the constraints, and the small decisions behind this site.

This site is a single-binary thought: minimal stack, no CMS, no third-party analytics, no client-side router beyond what Next gives me for free. The goal was to make something that loads instantly, reads well, and stays out of the way of writing.

Stack

  • Next.js 15 with the App Router, statically generated where possible.
  • MDX for notes — files live in content/notes/*.mdx, parsed at build time.
  • Tailwind for layout, with five colors total.
  • Shiki via rehype-pretty-code for code blocks.
  • Umami (self-hosted) for analytics — no third-party scripts, no cookies.
  • Packaged as a Docker container, served behind nginx with a free Let's Encrypt cert, on a Hetzner box that hosts the rest of my infra.

Constraints I gave myself

  1. No JavaScript on pages that don't need it. The homepage ships ~6 KB of JS (just the command palette).
  2. One accent color (#FFB000), reserved for interactive and live elements.
  3. Mono for chrome and metadata; serif for prose. Sans appears nowhere.
  4. The status bar at the top shows the real build hash — if it says BUILD 0a1f, that's the actual commit.

What it doesn't do

There's no comment system, no newsletter form, no related-posts widget, no "share" buttons. If you want to reach me, the contact page has the channels. If you want updates, the RSS feed is the only subscribe channel.

On the analytics side

I run Umami in a sibling container, reachable at analytics.haythamichahbane.com (private). It records pageviews, country, referrer, and time on page — nothing personal, no IP fingerprinting, no cookies. The dashboard is one screen.

privacyhaytham@dev:~$