Skip to content
← Lab

This website

A portfolio that runs like production. Live request tracing, synthetic monitoring, CI quality gates, and a photo pipeline, on a $0/month serverless stack.

role
Design, build, operate
duration
Ongoing
status
live
shipped
27 Sept 2026
  • Next.js
  • Vercel
  • Upstash Redis
  • GitHub Actions
  • Lighthouse
$0 / monthHosting cost
96Uptime checks per day
5Quality gates per PR
  • CI passing
  • pushed 22d ago
  • ★ 0
  • 0 forks
  • 0 open issues
  • JavaScript 74%
  • CSS 25%
  • HCL 1%
Architecture: select a component to see why it's there.
GitHubcontent + codeGitHub ActionsCI + quality gatesVercelbuild + edgeUpstash RedisserverlessMonitor cronevery 15 minVisitoryour browser
GitHub

Every change, including a new blog post or photo, is a commit. Pull requests are the only way in.

Why

A portfolio usually describes skills. I wanted this one to demonstrate them: the site itself is the proof. It's built, deployed, monitored and costed the same way I'd run a production service.

What's running

  • Live request trace. The home page calls /api/trace, which reads Vercel's routing headers to show which edge location served you and how long each hop took.
  • Synthetic monitoring. A GitHub Actions cron job checks the site every 15 minutes and writes results to a capped Redis list. The status page computes uptime windows, p50/p95 latency and incidents from it.
  • Quality gates. Every pull request runs a design-token lint, a photo metadata check, a production build, Lighthouse with a score budget, and a crawler that fails on broken internal links. The latest scores are published to the site.
  • Photo pipeline. Pushed photos are automatically stripped of GPS and camera metadata, resized, and given blurred placeholders.
  • Security. A strict Content-Security-Policy (hash-based, no inline scripts), HSTS, and locked-down permissions.
  • Infrastructure as code. Redis, the Vercel project, its environment variables and the CI secrets are Terraform. The infra page draws the dependency graph straight from the code.
  • Chaos demo. The home page's Simulate an outage button walks through detection, alerting and failover to the nearest region.
  • Post from anywhere. A GitHub issue form turns into a pull request with the post and cleaned photos, so publishing works from a phone.

Decisions

  • Serverless over a VM. Traffic is spiky and tiny, so scale-to-zero means no idle cost.
  • Redis over a database. Every stored value is a counter, a sorted set or a capped list. Upstash's HTTP API needs no connection pooling from serverless functions.
  • GitHub Actions for monitoring. An outside-in check from a different provider than the host is more honest than a site checking itself.
  • Content as files. Markdown and a manifest in the repo mean every change is reviewed, versioned and reversible.