Engineering
Building a Personal Site with Next.js 15 and Supabase
June 1, 2026
When I started building nold.dev, I had one constraint: ship fast without compromising on design.
I landed on Next.js 15 with the App Router for the framework, Supabase for the backend, and Vercel for deployment. The stack is minimal — no ORM, no CMS, just direct Supabase queries behind typed helper functions.
The biggest challenge was the server/client boundary. Next.js 15 is strict: components that use cookies or browser APIs must be Client Components. I learned this the hard way when generateStaticParams broke because my Supabase server client called cookies() at build time.
The fix was simple — a separate static client using the anon key directly, no cookie jar needed. Public data doesn't need auth.
Design-wise, I kept the palette to a single accent color (#6366f1) against a near-black background. High contrast, fast to scan, nothing competing for attention.
The admin panel lives at /nold-admin, protected by Supabase Auth. No third-party auth service — just email/password and Row Level Security doing the heavy lifting.
Total build time: two focused evenings.