ERGIN TÜRK

Building in Public

27 March 2026
#meta#dev#portfolio

$ git log --oneline | head -1 eeeb60c 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.