← Back to projects

Portfolio Site

2026
PersonalActive

Personal portfolio and blog built with Next.js 16, Tailwind CSS v4, and shadcn/ui with Base UI.

Portfolio Site

Overview

A ground-up rebuild of my personal portfolio, migrating from an ageing Create React App setup on Firebase to a self-hosted Next.js 16 App Router app. The goal was a clean, fast, and maintainable site that showcases my work and serves as a platform for writing.

Tech Stack & Architecture

A TypeScript Next.js application built with shadcn/ui components and Tailwind CSS, hosted as a Docker image on a Hetzner VPS.

Key Features

  • Landing page, project and blog pages, contact page, and CV
  • Typed route navigation helper for compile-time safe links
  • shadcn/ui with Base UI for fully controllable components
  • Dark mode with system preference detection
  • Self-hosted VPS deployment

Challenges & Learnings

My old portfolio was outdated, had a basic design, and didn't accurately represent me as a developer. The biggest challenge with this rebuild was communicating my experience and skill set without overwhelming prospective clients. I wanted to provide enough material to judge my ability to deliver without burying them in details.

This was also my first custom blog infrastructure using markdown. Previously I've always used a GUI-based platform, but for this site I wanted experience with markdown-based tooling - it's the format I'm most comfortable with and I find it provides a better writing experience once you're in a flow state.

Next.jsTypeScriptshadcn/uiTailwind CSSDocker

Have a similar project in mind?

I'd love to hear about it. Let's talk about what we could build together.

Let's Talk