How I made dzuizz.com
2026-04-07
Why build a personal site?
I wanted a place on the internet that's mine. Not a GitHub profile. Not a LinkedIn page. Just something _I_ designed from zero. It also felt like a good excuse to get comfortable with the modern Next.js ecosystem.
The stack
• Next.js 15: (App Router): React Server Components make it easy to mix static content with dynamic data without shipping unnecessary JS to the client.
• Tailwind CSS v4: utility-first styles with a custom design token system. No component library; everything is hand-rolled.
• TypeScript: types everywhere, no exceptions.
• Netlify: zero-config deploys on every push to `main`.
No database, no CMS, no auth.
1. Blog posts = Markdown files parsed at build time.
2. Photos metadata = JSON file I edit myself.
Design system
The theme is HEAVILY inspired by KUROMI! dark purples, hot pinks, and a lot of glow. I defined a small set of CSS custom properties (`--bg`, `--surface`, `--card`, `--pink`, `--purple`, ...) and built everything on top of those. Light mode just swaps the values; every component gets it for free.
The background is a single radial-gradient layer on the page wrapper so gradients blend naturally across sections instead of hard-cutting at every section boundary. (an issue i had some time ago)
Blog
Posts are `.md` files in `content/blog/`. A small TypeScript module reads them with `fs` at build time, parses frontmatter, and exposes typed `BlogPost` objects.
What I'd do differently
If I were starting today I'd probably reach for MDX instead of the hand-rolled Markdown parser; it would let me embed React components directly in posts without hacking around the renderer. But for a site this size, the current approach is fast and zero-dependency.
Takeaways
Building your own site from scratch, even a small one, forces you to make real decisions about every layer of the stack. You can't hide behind framework magic. This is where I learnt everything. ❤️