NuxtVuePortfolio

nuxt-3-portfolio — Nuxt Portfolio Template

By srestraj

An open-source portfolio template based on Nuxt 3, Pinia and Contentful, with content driven by Contentful, support for light and dark themes, responsive layout, Google Analytics and automatic sitemap, and one-click deployment to Vercel.

Explore the design

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

2 previews
Desktop homepage1 / 2
Desktop captureTop of page

Actual screenshot captured by the server browser.

All pages & views 2

Screenshots show visual appearance; interactive behavior may differ.

Recorded 2026-10-03View source

What stands out

A quick read of the recorded project description.

01

Built with Nuxt 3, using Pinia for state management

02

Project data driven by Contentful content models; you must create the Projects content type and fields yourself

03

Supports light, dark, and follow-system color modes

04

Responsive layout, with desktop and mobile page screenshots

05

Built-in Google Analytics integration and automatically generated sitemap.xml

06

Provides a Vercel one-click deploy button; the README explains environment variables and build command adjustments for manual deployment

Template Details

This is an open-source template for personal portfolio sites, built with Nuxt 3, using Pinia for state management, and sourcing project data from Contentful content models. The repository README describes its positioning as "minimal and lightweight" and provides three color modes (light, dark, and follow system), a responsive layout, Google Analytics integration, and an automatically generated sitemap.xml.

Before use, you need to create a Contentful account and space, create a content type named Projects, add the corresponding fields as shown in the README screenshots, enter content, and generate an access token. The project reads BASE_URL, CTF_SPACE_ID, DOMAIN, CTF_ACCESS_TOKEN, and an optional GOOGLE_ANALYTICS_ID from .env. The README also provides a Vercel one-click deploy button and notes that Nuxt 3 deployment methods have changed, which may require adjusting the output directory and build and dev commands before rebuilding.

The template is MIT licensed, allowing free use, modification, commercial use, and distribution of the code, but third-party assets such as demo images, fonts, and icons require separate license verification, and external services such as domains and hosting may incur costs.

NuxtVuePortfolio

Is it right for your project?

Use Cases

  • Personal developers or designers building a portfolio website
  • Wanting to use Contentful as a content backend to manage project data
  • Display sites that need light/dark theme switching and responsive layout
  • Planning to deploy to Vercel and integrate Google Analytics and a sitemap

Suitable For

  • Developers familiar with Nuxt or Vue and willing to configure a Contentful content model
  • Personal projects needing an open-source, modifiable portfolio template
  • Users who accept using external content services and hosting platforms

Getting started & customization

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

  1. 1

    Create a Contentful account and space, create a content type named Projects and add fields as shown in the README screenshots, enter content, and generate an access token

  2. 2

    Create a .env file and fill in BASE_URL, CTF_SPACE_ID, DOMAIN, CTF_ACCESS_TOKEN; GOOGLE_ANALYTICS_ID is optional

  3. 3

    Install dependencies using yarn install, npm install, or pnpm install --shamefully-hoist

  4. 4

    You can deploy with one click via the Vercel button in the README; for manual deployment, configure environment variables and adjust build and dev commands, setting the output directory if necessary and rebuilding

  5. 5

    Third-party assets such as demo images, fonts, and icons must be checked against their respective licenses; the code's MIT license alone is not sufficient

Read repository instructions

License & source material

Usage conditions & limitations

Free to use · keep license notice

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

Must comply with when using

  • You may use, modify, commercially use, and distribute this version's code 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

  • Before using this template, you must register a Contentful account and create a space; project data depends on this external content service and cannot run independently of Contentful.
  • You need to generate an access token (CTF_ACCESS_TOKEN) in Contentful and configure it in .env, otherwise the application cannot read content.
  • Google Analytics is optional; if enabled, you must provide your own GOOGLE_ANALYTICS_ID and comply with Google's relevant terms of service.
  • When deploying to Vercel, you may need to manually adjust the output directory and build and dev commands and rebuild, otherwise deployment may fail.
  • Demo images, fonts, icons, and other third-party assets must be checked against their respective licenses; the code's MIT license alone is not sufficient.
  • 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

Create a [Contentful](https://contentful.com) account.

Original README

create an access token to let your app communicate with Contentful

Original README

Get your Google Analytics ID (optional)

Original README

you might want to set the output directory as follows (see #9) and rebuild.

Original README
https://github.com/srestraj/nuxt-3-portfolio/blob/main/LICENSEhttps://github.com/srestraj/nuxt-3-portfolio/blob/main/README.md

Compiled by DeepSeek based on repository license and README ·2026-10-03. 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 · 88 / 100
Technologies
Nuxt · Vue
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
2026-09-09
Screenshot last checked
2026-10-03

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 Nuxt 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: 1525295594a86a993a3105a418e44ef8a64e44f10bd70ca3fdb4f168a3db33f9

2026-10-03T06:25:17.278Z

Source file / repository
# Nuxt 3 Minimal Portfolio using Pinia & Contentful

An open-source portfolio template built using [Nuxt 3](https://v3.nuxtjs.org/), [Pinia](https://pinia.vuejs.org/) and [Contentful](https://www.contentful.com/).

One-click deploy:

[![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/new/clone?repository-url=https://github.com/srestraj/nuxt-3-portfolio&repository-name=my-awesome-portfolio&env=BASE_URL,CTF_SPACE_ID,DOMAIN,CTF_ACCESS_TOKEN,GOOGLE_ANALYTICS_ID)

Demo: https://rajkshrestha1.com.np


**Features** 

- 🥰 Minimal and light
- 🌗 Light/dark/system color modes
- 📱 Responsive
- 📈 Google Analytics
- ⚡ Auto-generated sitemap (visit /sitemap.xml)
- 🚀 one click deployment to Vercel

### Prerequisites

1. Create a [Contentful](https://contentful.com) account.
2. Once your account is created, Contentful should have a space pre-installed/created. If not, create a space from the sidebar.
![Create space](https://github.com/srestraj/nuxt-3-portfolio/blob/main/public/space.png?raw=true)

3. Click on "Create model" at the top bar and create a new content type titled "Projects".
![Create model](https://github.com/srestraj/nuxt-3-portfolio/blob/main/public/content_type.png?raw=true)

4. Add fields to the content model with the following fields and types and save the model.
![Add fields](https://github.com/srestraj/nuxt-3-portfolio/blob/main/public/content_fields.png?raw=true)

5. Now, go to the Content tab and start adding content to the content model you just created.
6. Once everything's set up, create an access token to let your app communicate with Contentful. You can then copy your space id and access token and paste them in your .env
![Tokens](https://github.com/srestraj/nuxt-3-portfolio/blob/main/public/api_1.png?raw=true)

![Tokens](https://github.com/srestraj/nuxt-3-portfolio/blob/main/public/tokens.png?raw=true)

7. Get your Google Analytics ID (optional)
8. Now, you can click the deploy button to deploy the site to Vercel. Since Nuxt 3 has updated the deployment a little bit, you might want to set the output directory as follows (see #9) and rebuild.

[![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/new/clone?repository-url=https://github.com/srestraj/nuxt-3-portfolio&repository-name=my-awesome-portfolio&env=BASE_URL,CTF_SPACE_ID,DOMAIN,CTF_ACCESS_TOKEN,GOOGLE_ANALYTICS_ID)

9. If you want to manually deploy the site to Vercel, just make sure to include your environmental variables and modify the build and development commands as follows.
![Build Settings](https://github.com/srestraj/nuxt-3-portfolio/blob/main/public/build_settings.png?raw=true)

### Build Setup

create a `.env` file with the following variables

```
BASE_URL=(YOUR_SITE_URL w/o trailing slash)
CTF_SPACE_ID=(contentful space id)
DOMAIN=(YOUR_SITE_URL w/o trailing slash)
CTF_ACCESS_TOKEN=(contentful delivery access token)
GOOGLE_ANALYTICS_ID=
```

Make sure to install the dependencies:

```bash
# yarn
yarn install

# npm
npm install

# pnpm
pnpm install --shamefully-hoist
```
Report a correction

Explore similar templates

Compare previews and descriptions within the same stack and category.