Colophon

How this site is made.

This is a statically exported site built with Next.js 15 and hosted on AWS. Every page is pre-rendered at build time and served from S3 via CloudFront — no server required at runtime.

Frontend

  • Next.js 15React framework with App Router and static export
  • TypeScripttype-safe development
  • Tailwind CSSutility-first styling with a custom design system
  • MDXmarkdown content with React components via next-mdx-remote
  • EB Garamondserif typeface for body text and headings
  • rehype-highlightsyntax highlighting for code blocks

Infrastructure

  • AWS S3static file storage with versioning and cross-region replication
  • CloudFrontglobal CDN with HTTP/2, HTTP/3, and origin-group failover
  • Route 53DNS with A/AAAA alias records and health-check failover
  • ACMSSL/TLS certificate (DNS validated) for www.micahwalter.com
  • GitHub ActionsCI/CD with OIDC authentication (no stored credentials)
  • Fathom Analyticsprivacy-first analytics; no cookies, no personal data

Architecture

Visitors hit Route 53, which routes to a CloudFront distribution backed by two S3 origin groups. A secondary set of S3 buckets in us-east-2 receive all objects via Cross-Region Replication — CloudFront fails over to them automatically if the primary region has an outage. Deployment is fully automated: a push to main builds the static export and syncs it to S3 in about 3–4 minutes.

Loading diagram…

Content

Posts are MDX files stored in content/posts/ with date-prefixed folder names. Three content types share the same system:

  • Blog posts — essays on AI, cloud, and creativity
  • Photo posts — imported with EXIF extraction and AI-assisted tagging via Amazon Bedrock
  • Email posts — newsletter issues with a permanent archive URL

Images are optimized into WebP and JPEG at 400, 800, and 1200 px widths using Sharp. Originals and processed files are stored in S3 so the repository stays lean.

Newsletter

The newsletter backend is serverless, deployed alongside the site on AWS. Subscribers double opt-in via HMAC-signed confirmation tokens. Campaigns are authored as email posts in MDX and dispatched via EventBridge → SQS → a Go Lambda → SES. The subscription API has active-passive failover to us-east-2 with roughly 90-second recovery time. You can subscribe here.

Design

The palette is intentionally restrained: cream backgrounds, charcoal text, and a warm accent for links and highlights. Body text is set in EB Garamond at a 645 px reading line length. UI chrome uses system sans-serif fonts.

Source

The source code for this site is on GitHub.