Portfolio Site

The site you're looking at. MDX-driven, statically prerendered, with a tag-filtered blog and animated cards.

The stack

  • Next.js 16 (App Router, Turbopack)
  • @next/mdx + gray-matter for content
  • Tailwind CSS v4 + shadcn primitives
  • nuqs for URL-synced filter state

What I'm proud of

The blog detail pages use a hero header with the cover image behind the title and a black gradient overlay. The list page filters by tag and paginates via useQueryState, so the URL is shareable.

What I'd change

The placeholder image is shared across all dummy content. Time to draw real cover art.

GitHub