Building in Public
$ git log --oneline | head -1eeeb60c initial commit
Every project starts with a single commit. This one started with a blank Next.js app and a vague idea: build a portfolio that feels like a terminal, not a brochure.
The constraints I set
No templates. No Tailwind UI. No component libraries.
The rules were simple — monospace only, flat colors, everything built by hand. If it looked like a generic developer portfolio, it was wrong.
The result is what you're reading this on right now.
The stack
const stack = {
framework: "Next.js 16 — App Router",
styling: "Tailwind CSS v4 + inline styles",
animation: "GSAP + @gsap/react",
canvas: "PixiJS — weather background",
database: "Supabase — newsletter subscribers",
email: "Resend + React Email",
deployment: "Vercel",
};
The interesting constraint was i18n — four languages (EN, DE, JA, TR) without URL routing. Just React context, localStorage, and a cookie. No next-intl, no route restructuring.
What surprised me
PixiJS on the server is a hard no. Dynamic import with ssr: false or it crashes the build. Learned this in the first hour.
Tailwind v4 purges aggressively. Dynamic class names like mb-${n} vanish in production. Inline styles for anything runtime-generated.
The terminal aesthetic is harder than it looks. Getting the spacing, opacity layers, and monospace rhythm to feel intentional — not like a gimmick — took more iteration than the actual features.
What's next
- —Lightroom preset store via Lemon Squeezy
- —More photography from Japan
- —Writing more of these
If you're subscribed to this newsletter — thank you. This is the first broadcast. It worked.
written from Vienna.