Next.jsReactPortfolio

collected-nextjs-portfolio-template — Next.js Portfolio Template

By danil-vladimirov

A portfolio website template built with Next.js and Sanity.io, designed for visual creators to showcase their work. Content is managed through Sanity Studio, with support for static generation and live preview.

Explore the design

Compare the page layouts and mobile experience. Open any screenshot for a closer look.

3 previews
Desktop homepage1 / 3
Desktop captureTop of page

Actual screenshot captured by the server browser.

All pages & views 3

Screenshots show visual appearance; interactive behavior may differ.

Recorded 2026-10-02View source

What stands out

A quick read of the recorded project description.

01

Frontend uses Next.js, content is managed by the Sanity.io headless CMS, and Studio is accessible at /studio

02

Homepage, project pages, and an optional about page are all editable; project pages support modular content building

03

Projects displayed on the homepage can be selected and ordered; the navigation bar supports a custom logo and external links

04

Incremental static regeneration is triggered via webhook, and site-wide side-by-side live content preview is provided

05

Styling uses Tailwind CSS, animations use Framer Motion, and sitemap.xml and robots.txt are generated automatically

Template Details

Collected is a portfolio website template with a Next.js frontend and content managed by the headless CMS Sanity.io. It is aimed at visual creators for showcasing work: the homepage, project pages, and an optional about page can all be edited in Sanity Studio, which is mounted at the /studio path of the website. Project pages use a modular content-building approach, and the projects displayed on the homepage can be selected and ordered as desired.

The template offers several appearance and configuration options: you can set the site-wide background and text colors, upload a custom logo to replace the site title in the navigation bar, upload a favicon and OG image, and display external links in the navigation bar. Styling uses Tailwind CSS, animations use Framer Motion, and sitemap.xml and robots.txt are generated automatically.

For content publishing, the template triggers incremental static regeneration (ISR) via webhook, allowing new content to go live without waiting for a full site rebuild, and provides site-wide side-by-side live preview. The deployment path is primarily Vercel, and the README provides a Vercel deploy button and integration instructions for connecting to Sanity Content Lake.

Important limitations: the template relies on Sanity as the content backend, and local development requires obtaining environment variables first via vercel link and vercel env pull; the code is MIT licensed, but third-party assets such as demo images, fonts, and icons must be checked separately under their respective licenses.

Next.jsPortfolio

Is it right for your project?

Use Cases

  • Visual creators building a project collection website to showcase their work
  • Scenarios where non-technical editors need to maintain homepage and project content in a visual backend
  • Sites that want to publish a portfolio via static generation and have content updates take effect immediately
  • Projects using Vercel as the primary deployment platform and Sanity as the content backend

Suitable For

  • Personal portfolios of visual creators such as photographers, designers, and illustrators
  • Developers or teams willing to use Sanity as the content management backend
  • Portfolio sites that need customizable colors, logo, and navigation links
  • Next.js projects deployed on Vercel that want a quick start

Getting started & customization

Use these recorded setup notes alongside the repository instructions for your chosen version.

  1. 1

    It is recommended to first deploy using the Vercel deploy button in the README and connect to Sanity Content Lake via the Sanity Vercel integration

  2. 2

    For local development, clone the repository and run npx vercel link and npx vercel env pull to obtain environment variables

  3. 3

    Install dependencies and start the development server: npm install && npm run dev; the site runs at localhost:3000 by default, with Studio at /studio

  4. 4

    To publish to production, use git push or npx vercel --prod

  5. 5

    The code is MIT licensed, but third-party assets such as demo images, fonts, and icons must be checked under their respective licenses

Read repository instructions

License & source material

Usage conditions & limitations

Free to use · keep license notice

This entry covers the free version in a public repository under the MIT license; the free scope is the code of this version and does not mean that external services or third-party assets are free.

Must comply with when using

  • You are allowed to use, modify, commercially use, and distribute the code of this version for free.
  • When distributing copies or substantial portions of the code, retain the original author's copyright notice and the full MIT license notice.
  • The code is provided as is; warranties and limitations of liability are governed by the original license and applicable law.

Additional costs & items to verify

  • The template relies on Sanity as the content backend and requires connecting to Sanity Content Lake via the Sanity Vercel integration for content management features to work properly.
  • Before local development, you need to run npx vercel link to link the Vercel project and npx vercel env pull to retrieve the environment variables required to connect to Sanity.
  • Environment variables must be pulled via Vercel to connect to the Sanity project locally; without configured environment variables, the content backend cannot start properly.
  • The official deployment path is primarily Vercel; using other hosting platforms requires adjusting deployment and integration configurations yourself.
  • Demo images, fonts, icons, and other third-party assets must be checked under their respective licenses and cannot be judged solely by the code's MIT license.
  • External services such as domains, hosting, databases, payments, or AI may incur additional charges.
View Original Text Basis

Permission is hereby granted, free of charge

Original License Text

connect it to your Sanity Content Lake using [the Sanity Vercel Integration][integration]

Original README

npx vercel link

Original README

npx vercel env pull

Original README

Deploy this template with [Vercel](https://vercel.com) and start building your portfolio website right away

Original README
https://github.com/danil-vladimirov/collected-nextjs-portfolio-template/blob/main/LICENSEhttps://github.com/danil-vladimirov/collected-nextjs-portfolio-template/blob/main/README.md

Compiled by DeepSeek based on repository license and README ·2026-10-02. Results only cover the materials read; dependencies, images, fonts, and subsequent term changes are subject to their respective original texts.

Project checks & description sources

Template Information

Source platforms
GitHub
Documentation and maintenance reference score
More documented · 81 / 100
Technologies
Next.js · React
Website type
Portfolio
How this score is calculated

Our heuristic uses license records (up to 30), a demo link (12), a preview (10), stars (15), recorded maintenance (15), description completeness (8), feature records (5) and classification data (5). It is not a code, security or performance test, or a Google score. A link does not establish tested functionality.

What to verify for this project

Repository update recorded
2025-06-25
Screenshot last checked
2026-10-02

A demo link is listed. Check it with your own content and viewport sizes; its presence does not confirm that forms, authentication or payments work.

The catalog identifies Next.js as the primary stack. Check the actual dependency manifest and lockfile for versions and hosting requirements. These notes use recorded metadata, not a code audit or a deployment test.

Use a selection guide →

How this description was prepared

AI-assisted description based on catalog records and repository material. Repository authors are not automatically the reviewers of this description.

Automatically checked against source and license rules; no manual editorial review.

Inspect the recorded source material

SHA-256: a3be8be33adb2f9a014c7c272a49bf2719336940b77a1ef74b240653945ba128

2026-10-02T19:51:20.769Z

Source file / repository
<p align="center">
<img src="sanity/plugins/collected-logo-black.svg" align="center" height="70" alt="Collected" />
</p>
<p align="center">
  <strong>Portfolio website template built on <a href="https://nextjs.org">Next.js</a></strong><br />
  <strong>Headless CMS powered by <a href="https://sanity.io">Sanity.io</a></strong><br />
</p>

<p align="center">
  <a href="https://collected-nextjs-portfolio-template.vercel.app/">
    <img src="https://img.shields.io/static/v1?label=&logo=vercel&message=View%20Demo&style=for-the-badge&color=black" />
  </a>
  <a href="https://collected.to">
    <img src="https://img.shields.io/static/v1?label=&message=collected.to&style=for-the-badge&color=351BD3" />
  </a>
</p>

<p align="center">
  <a href="#features">Features</a> •
  <a href="#overview">Overview</a> •
  <a href="#-automatic-set-up">Set Up</a> •
  <a href="#local-configuration">Local configuration</a>
</p>

<br />

Collected is a clean and easy-to-use portfolio website that helps visual creators showcase their work. Built with customisation in mind: set `custom colors` for your website, upload a `custom logo`, create projects with a modular `content builder`, and select and order the projects displayed on your Home page. This template is a statically generated portfolio website that uses [Next.js][nextjs] for the frontend and [Sanity][sanity-homepage] to handle its content.

Deploy this template with [Vercel](https://vercel.com) and start building your portfolio website right away:

[![Deploy with Vercel](https://vercel.com/button)][vercel-deploy]

# Features

- A performant, static portfolio website with editable `Home page`, `Projects` and optional `About page`
- A clean and user-friendly content management environment by [Sanity][sanity-homepage], accessible on `yourwebsite.com/studio`
- Webhook-triggered Incremental Static Revalidation; no need to wait for a rebuild to publish new content
- Side-by-side instant content preview that works across your whole site
- CSS powered by [Tailwind CSS](https://tailwindcss.com)
- Animation powered by [Framer Motion](https://www.framer.com/motion/)
- Automatic `sitemap.xml` and `robots.txt` generation
- Built-in customisation features:
  - Set your background and text colors for the entire website
  - Upload your favicon and OG-image
  - Select and order projects displayed on the Home page
  - Modular page content builder for the Project page
  - Dynamic external links display in the `Navbar`
  - Upload a custom logo to replace the website title in the `Navbar`
    <br />

# Overview

| [Portfolio Website](https://collected-nextjs-portfolio-template.vercel.app/)                          | [Sanity Studio](https://collected-nextjs-portfolio-template.vercel.app/studio)                    |
| ----------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- |
| ![Portfolio Website](https://github.com/user-attachments/assets/2b5b9cc4-a143-4231-89cf-5d12c2e07a9f) | ![Sanity Studio](https://github.com/user-attachments/assets/94597250-92d0-4d9e-aeaa-a8965d6768d1) |

<br />

# ⚡ Automatic Set Up

Quickly deploy as a Sanity Starter on [Vercel](https://vercel.com) a clean version of a portfolio wesite! All you have to do is start filling it with your content

[![Deploy with Vercel](https://vercel.com/button)][vercel-deploy]

<br />

**[⚡ 14-Minute Setup Walkthrough](https://youtu.be/-vbhcc7pzwg)** <br />
From deploy to launch, watch me building up a fresh portfolio website in under 14 minutes!

<br />

# Local configuration

### Step 1. Set up the environment

Use the Deploy Button below. It will let you deploy the starter using [Vercel](https://vercel.com) as well as connect it to your Sanity Content Lake using [the Sanity Vercel Integration][integration].

[![Deploy with Vercel](https://vercel.com/button)][vercel-deploy]

### Step 2. Set up the project locally

[Clone the repository](https://docs.github.com/en/repositories/creating-and-managing-repositories/cloning-a-repository) that was created for you on your GitHub account. Once cloned, run the following command from the project's root directory:

```bash
npx vercel link
```

Download the environment variables needed to connect Next.js and the Studio to your Sanity project:

```bash
npx vercel env pull
```

### Step 3. Run Next.js locally in development mode

```bash
npm install && npm run dev
```

When you run this development server, the changes you make in your frontend and studio configuration will be applied live using hot reloading.

Your portfolio website should be up and running on [http://localhost:3000][localhost-3000]! You can create and edit content on [http://localhost:3000/studio][localhost-3000-studio].

### Step 4. Deploy to production

To deploy your changes to production you use `git`:

```bash
git add .
git commit
git push
```

Alternatively, you can deploy without a `git` hosting provider using the Vercel CLI:

```bash
npx vercel --prod
```

<br />

### Important files and folders

| File(s)                                                    | Description                                             |
| ---------------------------------------------------------- | ------------------------------------------------------- |
| `sanity.config.ts`                                         | Config file for Sanity Studio                           |
| `sanity.cli.ts`                                            | Config file for Sanity CLI                              |
| `/app/studio/[[...tool]]/Studio.tsx`                       | Where Sanity Studio is mounted                          |
| `/app/api/revalidate/route.ts`                             |  Serverless route for triggering ISR                    |
| `/app/api/draft/route.ts`                                  | Serverless route for triggering Draft mode              |
| `/sanity/schemas`                                          | Where Sanity Studio gets its content types from         |
| `/sanity/plugins`                                          | Where the advanced Sanity Studio customization is setup |
| `/sanity/loader/loadQuery.ts`,`/sanity/loader/useQuery.ts` | Configuration for the Sanity Content Lake client        |

<br />

# Shoutouts

Base structure and Sanity fetching logic is based on [template-nextjs-personal-website](https://github.com/sanity-io/template-nextjs-personal-website). This is a great starter template by Sanity which is highly influenced this template.

### Designed and developed

- [@danil-vladimirov](https://github.com/danil-vladimirov)

<br />

# License

### [MIT](LICENSE)

> [danilvladimirov.co.uk](https://danilvladimirov.co.uk) &nbsp;&middot;&nbsp;
> Github [@danil-vladimirov](https://github.com/danil-vladimirov) &nbsp;&middot;&nbsp;
> Instagram [@danilvladimirov](https://instagram.com/danilvladimirov)

[vercel-deploy]: https://vercel.com/new/clone?repository-url=https%3A%2F%2Fgithub.com%2Fdanil-vladimirov%2Fcollected-nextjs-portfolio-template&project-name=collected-nextjs-portfolio-template&repository-name=collected-nextjs-portfolio-template&demo-title=Collected+Portfolio+Template&demo-description=A+Sanity-powered+Nextjs+portfolio+website+with+built-in+content+editing.&demo-url=https%3A%2F%2Fcollected-nextjs-portfolio-template.vercel.app%2F&demo-image=https%3A%2F%2Fcdn.sanity.io%2Fimages%2Fkpvqqfux%2Fproduction%2Fda082b62d1828efe642c617ddc4771a4d267fc5e-3092x1790.png&integration-ids=oac_hb2LITYajhRQ0i4QznmKH7gx&external-id=nextjs%3Btemplate%3Dtemplate-nextjs-personal-website
[integration]: https://www.sanity.io/docs/vercel-integration
[nextjs]: https://github.com/vercel/next.js
[sanity-homepage]: https://www.sanity.io
[localhost-3000]: http://localhost:3000
[localhost-3000-studio]: http://localhost:3000/studio
Report a correction

Explore similar templates

Compare previews and descriptions within the same stack and category.

react-resume-template

react-resume-template

A personal resume website template for software developers, built with Next.js, React, and TypeScript and styled with Tailwind CSS. Site content is driven by a single data file at /src/data/data.tsx, with types in dataDef.ts and images in src/images/.

Next.js · Portfolio

nxt-lnk

nxt-lnk

nxt-lnk is a Next.js-based bio link page template that manages personal information and links via BioData.js and LinksData.js, positioned as a self-hosted alternative to Linktree. It groups links by type, supports enabling/disabling individual links, and offers hexagonal or oval avatars.

Next.js · Portfolio

sylph

sylph

Sylph is a minimal portfolio and blog template built on Next.js, supporting MDX/Markdown writing, light/dark themes, and automatic OG image generation. It includes sitemap, robots.txt, metadata, and syntax highlighting, with automatic blog timestamps.

Next.js · Portfolio

sleek-portfolio

sleek-portfolio

A modern, responsive portfolio template built with Next.js 15, TypeScript, Tailwind CSS, and Shadcn UI. It includes an MDX blog, project showcase, work experience timeline, and a contact form that receives messages via Telegram Bot.

Next.js · Portfolio

research-website-template

research-website-template

A React + Next.js template for research personal websites, aimed at PhD students and researchers. It centralizes publications, projects, and other content in src/data as arrays of objects, with optional fields automatically generating UI components.

Next.js · Portfolio

shadcn-portfolio

shadcn-portfolio

A developer portfolio template built with Next.js 15, shadcn/ui, Tailwind CSS, and Framer Motion, featuring an MDX blog, light and dark modes, responsive design, and SEO meta tags.

Next.js · Portfolio