* notes / meta

the stack behind this site

A tour of the choices that make akzu.dev what it is — Next.js 16, Bun, SQLite + Redis on Dokploy, and a riso-print aesthetic that fights the AI-slop look.

June 15, 20252 min read#meta#nextjs#design

Welcome. This post is the colophon — what this site is, why the choices, and what's coming.

why it exists

I've been writing fullstack for ~10 years, mostly for streaming platforms and agencies. Most of that work is private — behind logins and NDAs. This site is the public part: notes I want to keep, experiments I want to share, and a place that doesn't look like every other developer portfolio.

the design

The brief I gave myself: don't look like AI made it.

That meant some specific commitments:

  • Light/paper as the default theme. Developer portfolios default to dark. Going against the grain costs me nothing and signals intent.
  • No Inter, no Space/Cabinet Grotesk. I'm running Anybody (a variable display font with width and weight axes), Bricolage Grotesque for body, and Fragment Mono for code.
  • Riso-print accents. Tangerine, chartreuse, hot pink. Layered over warm paper. Halftone dots in the background gradient.
  • Real motion. Page intros stagger in. The hero is a react-three-fiber scene: a flock of paper planes — some solid paper, some blueprint wireframe — gliding past a wireframe planet, swerving away from your cursor.

the stack

LayerChoice
FrameworkNext.js 16 (App Router) + TypeScript
RuntimeNode 22
Package mgrBun
StylingTailwind v4
ContentMDX in repo
DBbetter-sqlite3
CacheRedis (ioredis)
HTTPaxios + TanStack Query
Authiron-session (env-var password)
3D@react-three/fiber + drei
TestsVitest + Playwright
DeployDocker + Dokploy

the interactive bits

  • Hearts. Each post has a heart button. Tap to send one. Spam to send fifty. Server caps at 50,000 per visitor per post — I'm betting nobody hits the cap. Redis holds the live total, SQLite is the source of truth.
  • Self-hosted analytics. No Google Analytics, no Plausible. SQL tables, daily-rotating visitor hashes, a tiny dashboard at a path I won't tell you.

the lab

/lab is where the experiments live. Day one ships with /lab/cubes — 500 instanced cubes that drift, lean toward the mouse, and seed deterministically from the URL. Try ?seed=42. Then try ?seed=10000.

I'll add more as I make them.

what's next

  • More posts. Probably one on the heart-spam debouncing, one on the riso-print look.
  • More lab experiments. Browser-based, small, opinionated.
  • An RSS feed (already done — /rss.xml).
  • Maybe a Spanish version. Maybe.

Send a heart if you read this far.