* 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.
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-fiberscene: a flock of paper planes — some solid paper, some blueprint wireframe — gliding past a wireframe planet, swerving away from your cursor.
the stack
| Layer | Choice |
|---|---|
| Framework | Next.js 16 (App Router) + TypeScript |
| Runtime | Node 22 |
| Package mgr | Bun |
| Styling | Tailwind v4 |
| Content | MDX in repo |
| DB | better-sqlite3 |
| Cache | Redis (ioredis) |
| HTTP | axios + TanStack Query |
| Auth | iron-session (env-var password) |
| 3D | @react-three/fiber + drei |
| Tests | Vitest + Playwright |
| Deploy | Docker + 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.