//sinancanozer.dev
metanextjsprocess

Building This Site

You're reading this on the thing it's about.

I went full-time freelance recently, and that changes what a portfolio is for. When you have a job, your work speaks through your employer. When you're on your own, the work has to speak for itself — and it needs a place to do that. I'd been carrying years of projects around in my head and across scattered folders: museum installations, a couple of games, backend systems, small tools. None of it lived anywhere a stranger could find it. So I built this site to be that place.

Here's what went into it, and what I learned making it.

The stack#

The site runs on Next.js with the App Router, written in TypeScript, styled with Tailwind. Content lives in MDX files — every project case study and every journal post (including this one) is just a Markdown file with some frontmatter on top.

That last decision is the one I'm happiest with. The site is file-driven. When I want to add a project, I don't touch any page code — I drop a new .mdx file into a folder and the site picks it up:

export function getAllProjects(): Project[] {
  const files = readdirSync("content/projects/");
  return files
    .map((file) => parseFrontmatter(file))
    .filter((p) => p.published)
    .sort((a, b) => a.order - b.order);
}

The /projects page asks that function what exists and renders whatever comes back. Five projects today, fifty someday — the code never changes. New work is a file and a git push, nothing more. The same pattern drives the journal you're reading right now.

The design#

The look is deliberate. Warm black instead of pure black, a single amber accent, monospace type doing most of the heavy lifting, and a quiet HUD framing the edges of the screen. No glassmorphism, no soft gradients, no rounded everything.

I didn't pull this from a template. It's the aesthetic I actually like — terminals, technical drawings, the feeling of a system you're operating rather than a brochure you're flipping through. I spend my days in installations and tooling, close to hardware, and I wanted the site to feel like that world. A portfolio should look like the person, not like every other portfolio. This one looks like me.

What I learned#

Honestly, the answer is all of it — but in the way where you already half-knew everything and building the real thing turned that half-knowing into the actual skill.

I'd touched Next.js before, but wiring up a fully file-driven content system end to end — dynamic routes, static generation, an MDX pipeline with syntax-highlighted code blocks — made it concrete in a way tutorials never do. The same went for the parts nobody tells you about: getting a domain onto Cloudflare, pointing DNS at Vercel, untangling why a deploy got blocked (a stale git email, of all things), making a boot-sequence animation render correctly across screens. None of those are glamorous. All of them are the difference between a project on your laptop and a site that's actually live.

The unglamorous parts are most of the job. I knew that already. Building this reminded me.

On using an AI agent#

I'll be upfront about it: I built a lot of this alongside an AI coding agent. It handled the repetitive work — scaffolding components, wiring up boilerplate, turning a decision into a dozen files — and that kept me fast. Three days, not three weeks.

But the agent was a tool, not the author. The architecture, the design language, what goes in and what stays out, every judgment call about how the thing should feel — those were mine. I leaned on the agent for speed and reached for it on a few genuinely tricky problems. The taste, and the decisions, stayed with me. I think that's the honest way to use these tools right now: let them move fast on the work you understand, and stay in the driver's seat on the work that matters.

What's next#

The site is live, and it's built to grow. More case studies as projects wrap. More writing here in the journal — some technical like this, some not, like the Lovecraft piece sitting next to it. Real photos from the museum installations once I'm back on site to capture them.

For now, it exists. A stranger can find the work, and the work speaks for itself. That was the whole point.