My Old NextJS Portfolio

Modern portfolio website with server-side rendering for SEO and Go backend API sidecar for dynamic endpoints.

Tags: NextJSTailwind CSSPortfolio
Tech Stack: NextJS Go Tailwind CSS TypeScript
My Old NextJS Portfolio

Introduction

This was my previous portfolio site, built with Next.js and Tailwind CSS before the current Astro-based version. It served as my professional web presence through 2024 and was also a deliberate experiment in combining a Next.js frontend with a Go backend for API endpoints — a polyglot architecture chosen to evaluate each runtime’s strengths on the same project.

The Challenge & Solution

The portfolio needed server-side rendering for SEO — search engines needed to index project content without relying on client-side JavaScript hydration — while keeping the architecture simple enough to maintain without CI/CD infrastructure overhead. Next.js App Router handled SSR for project pages and statically generated the high-traffic routes, giving fast initial loads with good crawlability. The Go backend was introduced as a lightweight API sidecar for dynamic endpoints: a single compiled binary with no runtime dependencies, ~10MB memory footprint, and sub-millisecond cold response times. Running both runtimes side by side on the same project made the runtime tradeoffs concrete — Next.js was better for page rendering and DX, Go was better for low-overhead API endpoints that needed no framework scaffolding.

Technologies & Architecture

  • Next.js App Router: SSR for project case study pages ensured search engine crawlers received fully rendered HTML, while client-side navigation kept the browsing experience fast after initial load.
  • Go: Single-binary API sidecar for dynamic data endpoints — no runtime dependencies, minimal memory overhead, and a simple HTTP handler pattern that was faster to write than a Node.js Express equivalent for pure JSON APIs.
  • TypeScript: Shared type definitions between the Next.js frontend and the API response contracts, catching interface mismatches between the Go backend’s JSON output and the React component’s expected props at compile time.
  • Tailwind CSS: Utility-first styling with zero runtime CSS-in-JS overhead, keeping the bundle lightweight and the layout fully responsive without custom media query breakpoints.

Key Highlights

  • Modern design
  • Responsive layout
  • Performance optimization

Impact

SSR via Next.js App Router delivered fast initial page loads and full search engine indexability for all project pages. The Go sidecar experiment confirmed that a compiled binary API needs no framework overhead for simple JSON endpoints — a finding that influenced subsequent architecture decisions on API design.

Visit Project