How to Build a Next.js Portfolio (Step by Step, 2026)

How do you build a Next.js portfolio? Build a Next.js

how to build a nextjs portfolio | designtocodes

On this page

How do you build a Next.js portfolio?

Build a Next.js portfolio by scaffolding an App Router project, structuring routes for your home and project pages, serving images through next/image, adding SEO with the Metadata API, and deploying to Vercel with one command. The framework gives you fast, server-rendered pages by default — you just fill in your work. Here’s the step-by-step, and where a template saves you the setup.

Step 1 — Scaffold the project

npx create-next-app@latest my-portfolio
# choose: App Router, TypeScript, Tailwind (optional)
cd my-portfolio && npm run dev

Step 2 — Structure your routes

app/
  page.tsx            // home: hero + selected work
  projects/
    page.tsx          // all projects
    [slug]/page.tsx   // one project case study
  components/
    Hero.tsx  ProjectCard.tsx

The App Router renders these on the server by default, so your content is in the HTML that crawlers and AI engines read — the foundation of the portfolio’s SEO.

Step 3 — Optimize images with next/image

import Image from 'next/image'
<Image src="/work/app.webp" alt="Project dashboard"
  width={1200} height={800} priority />

Use priority on the hero image so it preloads (it’s your Largest Contentful Paint element), and let next/image handle sizing and modern formats for the rest.

Step 4 — Add SEO with the Metadata API

export const metadata = {
  title: 'Sam Rivera — Front-End Engineer',
  description: 'Fast, accessible React apps. Selected work and case studies.',
  alternates: { canonical: 'https://samrivera.dev' },
}

Per-page titles, descriptions and canonicals in code — no plugin. Add a sitemap.ts and you’ve covered the technical basics.

Step 5 — Write the case studies

Each project page follows the same arc: problem, approach, result, links. This is the content that wins interviews and clients; spend more time here than on animation.

Step 6 — Deploy

npm i -g vercel && vercel
# or push to GitHub and import into Vercel

You get HTTPS, a global CDN, and automatic deploys on every push. Add your custom domain, and you’re live.

Performance checklist before you ship

  • Hero image uses next/image with priority.
  • Fonts loaded via next/font (no layout shift).
  • Server Components by default; 'use client' only where needed.
  • Run PageSpeed Insights on mobile and fix the top issues.

Prefer to skip the setup? Our Next.js portfolio templates — NextGenAppsPro and the designer-focused Grafik V2 — ship with this structure and optimization already in place.

Which rendering method for which page?

Page Render method Why
Home & project pages Static (SSG) Content rarely changes; fastest possible load
Blog/notes Static, or ISR Rebuild on publish; still static-fast
Contact form handling Server action/route Handle submissions server-side
Dynamic dashboard (if any) SSR / client Only where data is per-request

Next.js portfolio templates to start from

Template Best for Price
NextGenAppsPro Developer portfolio, case-study ready Free + Pro
Grafik V2 Designer / creative, gallery-led Premium

Frequently asked questions

Is Next.js good for a portfolio?

Yes. It gives you fast, server-rendered pages, built-in image and font optimization, and native SEO through the Metadata API — everything a portfolio needs to load fast and rank.

Do I need a backend for a Next.js portfolio?

Usually not. A portfolio is mostly static content, so you can render pages at build time and deploy as a fast static/SSR site with no separate backend.

How long does it take to build a Next.js portfolio?

A weekend from scratch if you write your case studies first, or an evening starting from a template. The content takes longer than the code.

Want a head start? Start from a Next.js portfolio template built to these standards.

Explore DesignToCodes templates →

Recent Blogs
From the Journal
How to Optimize Your Website for AI Search (AEO & GEO) in 2026

How do you optimize your website for AI search? To

Why Isn’t My Website Showing Up on Google? Indexing Fixes (2026)

Why isn’t my website showing up on Google? If your

Scroll to Top

You have reached your daily limit of 5 downloads for the Pro plan. Please try again tomorrow, or upgrade to Lifetime for unlimited downloads.