Next.jsReactPortfolio

portfolio-next — Next.js Portfolio Template

By mandharet

An open-source personal portfolio template built with Next.js 15, TypeScript, and Tailwind CSS 4, configuring personal information via YAML and writing blog, project, and experience content in MDX.

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-14View source

What stands out

A quick read of the recorded project description.

01

Configure site information and page content using YAML files (site, personal, home, about) without modifying code

02

Blog, projects, and experiences are all written in MDX, supporting frontmatter fields and React components

03

Integrates Giscus comments based on GitHub Discussions; requires configuring repository and category IDs per README steps

04

Supports Mermaid diagrams and Markdown tables; code blocks include syntax highlighting and a copy button

05

Includes dark/light mode toggle, mobile navigation, and SEO configurations such as sitemap, metadata, and structured data

06

Tech stack includes Next.js 15, TypeScript, Tailwind CSS 4, MDX, shadcn/ui, etc., using static generation

Template Details

This is an open-source personal portfolio template for developers, designers, and creators. The README states it is built with Next.js 15, TypeScript, and Tailwind CSS 4, and uses YAML configuration files to manage site information and page content: site.yaml stores name, title, domain, email, description, and keywords; personal.yaml stores social links and resume; home.yaml and about.yaml correspond to the homepage and about page content respectively. Blog, project, and experience content are placed as .mdx files under src/content/, with frontmatter defining fields such as title, date, tags, tech stack, and links; the content automatically appears on the site. The template includes a homepage hero section, about page, blog, project showcase cards, experience timeline, and supports Giscus comments, Mermaid diagrams, Markdown tables, code highlighting with copy button, dark/light mode toggle, and mobile navigation. The README also mentions SEO-related sitemap, metadata, and structured data, as well as static generation. For deployment, it provides two methods: Vercel and Netlify; the Netlify build command is bun run build and the publish directory is out. The README does not specify performance metrics, browser compatibility ranges, or accessibility support.

Next.jsPortfolio

Is it right for your project?

Use Cases

  • Developers building a personal portfolio site with a blog and project showcase
  • Designers or creators presenting works and experiences using MDX articles and project cards
  • Technical blogs requiring Giscus comments, Mermaid architecture diagrams, and code highlighting
  • Personal sites where site copy, social links, and SEO information are centrally managed via YAML

Suitable For

  • Developers familiar with or willing to use Next.js and TypeScript
  • Authors of personal sites needing three content structures: blog, projects, and experiences
  • Users who prefer writing in Markdown/MDX and want content to automatically generate pages
  • Personal projects planned for deployment to Vercel or Netlify

Getting started & customization

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

  1. 1

    After cloning the repository, install dependencies using bun install (the README uses bun as an example)

  2. 2

    Edit src/config/site.yaml, personal.yaml, home.yaml, and about.yaml to fill in personal information

  3. 3

    After updating YAML, also synchronously modify src/app/opengraph-image.tsx (lines 4, 27, 35, 43) and optionally public/og-image.svg

  4. 4

    Create .mdx files for blogs, projects, and experiences under src/content/ following the frontmatter format in the README

  5. 5

    To use Giscus comments, create a public repository, enable Discussions, install the Giscus app, and fill in data-repo, data-repo-id, and the two data-category-id values in src/components/Giscus.tsx

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 the public repository; the free scope is the code of this version and does not imply that external services or third-party assets are free.

Must comply with when using

  • Free use, modification, commercial use, and distribution of this version's code are permitted.
  • 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

  • Demo images, fonts, icons, and other third-party assets must be checked against their respective licenses; they cannot be judged solely by the code's MIT license.
  • External services such as domains, hosting, databases, payments, or AI may incur additional charges.
  • Using the Giscus comment feature requires first creating a public GitHub repository to host Discussions.
  • Discussions must be enabled in the repository settings for comments to work properly.
  • The Giscus app (GitHub App) must be installed to integrate the comment system.
  • You need to go to giscus.app for configuration and obtain the repository and category identifier values.
  • You must manually modify src/components/Giscus.tsx and fill in your own repository and category ID configuration values.
  • The README points to a detailed configuration guide on the author's personal blog as an external reference link.
View Original Text Basis

Permission is hereby granted, free of charge

Original License Text

1. Create a public GitHub repository for discussions

Original README

2. Enable Discussions in repo settings

Original README

3. Install [Giscus app](https://github.com/apps/giscus)

Original README

4. Go to [giscus.app](https://giscus.app) and configure:

Original README

5. Update `src/components/Giscus.tsx` with your values:

Original README

📖 **[Read the detailed setup guide](https://tejas.mandhare.com/blog/adding-giscus-comments-portfolio)** - Complete walkthrough with code examples, troubleshooting, and best practices.

Original README
https://github.com/mandharet/portfolio-next/blob/DEVELOPMENT/LICENSEhttps://github.com/mandharet/portfolio-next/blob/DEVELOPMENT/README.md

Compiled by DeepSeek based on repository license and README ·2026-10-14. 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
Partly documented · 72 / 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
2026-02-08
Screenshot last checked
2026-10-14

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.

Review declaration: codex-user-requested-batch-review-20261015 · 2026-10-15

Inspect the recorded source material

SHA-256: 7dbec0f34f24a3afdde199c166ce610f7749a5480c65275b1768676977faa284

2026-10-14T15:56:23.703Z

Source file / repository
# 🚀 Portfolio - Next.js

> **Open Source Portfolio Template** - Clone it, customize it, make it yours!

A modern, SEO-optimized portfolio website built with Next.js 15, TypeScript, and Tailwind CSS. Perfect for developers, designers, and creators who want a professional online presence.

![Next.js](https://img.shields.io/badge/Next.js-15-black)
![TypeScript](https://img.shields.io/badge/TypeScript-5-blue)
![Tailwind CSS](https://img.shields.io/badge/Tailwind-4-38bdf8)
![License](https://img.shields.io/badge/License-MIT-green)

---

## ✨ Why This Template?

- 🎨 **Beautiful Design** - Modern UI with dark/light mode
- ⚙️ **YAML Configuration** - Update your info without touching code
- 📝 **MDX Blog** - Write posts in Markdown with React components
- 💬 **Giscus Comments** - GitHub Discussions powered comments
- 📊 **Mermaid Diagrams** - Visualize architecture and workflows
- 📋 **Markdown Tables** - Display data in responsive tables
- 🎨 **Syntax Highlighting** - Beautiful code blocks with copy button
- 🔍 **SEO Ready** - Sitemap, metadata, structured data included
- 📱 **Mobile First** - Fully responsive on all devices
- 🚀 **Fast** - Static generation, optimized performance
- 🎯 **Type Safe** - Full TypeScript support

---

## 🎉 Get Started in 3 Steps

### 1. Clone & Install

```bash
git clone https://github.com/yourusername/portfolio-next.git
cd portfolio-next
bun install
```

### 2. Update Your Info

Edit `src/config/site.yaml`:

```yaml
name: "Your Name"
title: "Your Title"
domain: "https://yoursite.com"
email: "[email protected]"
description: "Your description"
keywords: ["Your", "Keywords"]
```

Edit `src/config/personal.yaml`, `src/config/home.yaml`, and `src/config/about.yaml` with your information.

**Note:** After updating YAML files, also update:

- `src/app/opengraph-image.tsx` (lines 4, 27, 35, 43) - for social media previews
- `public/og-image.svg` (optional fallback)

### 3. Run & Deploy

```bash
bun run dev      # Preview locally
bun run build    # Build for production
```

Deploy to [Vercel](https://vercel.com) or [Netlify](https://netlify.com) in one click!

---

## 📝 Easy Customization

### YAML Configuration (No Code!)

All your information is in simple YAML files:

- `src/config/site.yaml` - Name, title, SEO settings
- `src/config/personal.yaml` - Social links, resume
- `src/config/home.yaml` - Homepage content
- `src/config/about.yaml` - About page, skills

### Add Content in Markdown

Create `.mdx` files in `src/content/`:

**Blog Post** (`src/content/blogs/my-post.mdx`):

```mdx
---
title: "My First Post"
description: "Brief description"
date: "2024-01-20"
tags: ["React", "Next.js"]
readingTime: "5 min read" # Optional
---

# Hello World!

Your content here...
```

**Project** (`src/content/projects/my-project.mdx`):

````mdx
---
title: "My Project"
description: "Brief description"
date: "2024-01-20"
tech: ["React", "Node.js"]
github: ["https://github.com/you/project"] # Supports multiple URLs
link: ["https://demo.com"] # Optional, supports multiple
papers: ["https://paper-url"] # Optional, for research papers
image: "/projects/my-project.jpg" # Optional
---

# My Awesome Project

Project details...

## Architecture

```mermaid
graph LR
    A[Frontend] --> B[API]
    B --> C[Database]
```
````

## Tech Stack

| Category | Technologies     |
| -------- | ---------------- |
| Frontend | React, Next.js   |
| Backend  | Node.js, Express |

````

**Experience** (`src/content/experiences/my-job.mdx`):

```mdx
---
company: "Company Name"
role: "Software Engineer"
period: "2023 - Present"
description: "Brief description"
technologies: ["React", "Node.js"]
date: "2023-01-01"
---

# My Experience

Details about your role...
````

That's it! Your content appears automatically.

---

## 🎨 What You Get

- ✅ Homepage with hero section
- ✅ About page with skills & bio
- ✅ Blog with MDX support
- ✅ Giscus comments on blog posts and projects
- ✅ Project showcase with image cards
- ✅ Experience timeline
- ✅ Mermaid diagram support
- ✅ Markdown table support
- ✅ Syntax highlighting with copy button
- ✅ Multiple URLs per project (GitHub, demo, papers)
- ✅ Dark/Light mode toggle
- ✅ Mobile-friendly navigation
- ✅ SEO optimized (sitemap, metadata, structured data)
- ✅ Fast loading (static generation)

---

## 🚀 Deploy Your Portfolio

### Vercel (Recommended)

1. Push your code to GitHub
2. Go to [vercel.com](https://vercel.com)
3. Import your repository
4. Click Deploy - Done! 🎉

### Netlify

1. Push your code to GitHub
2. Go to [netlify.com](https://netlify.com)
3. Import your repository
4. Build: `bun run build` | Publish: `out`
5. Deploy - Done! 🎉

---

## 📚 Documentation

- **[docs/README.md](./docs/README.md)** - Quick overview
- **[docs/ARCHITECTURE.md](./docs/ARCHITECTURE.md)** - Technical details

---

## 🛠️ Tech Stack

- **Next.js 15** - React framework with App Router
- **TypeScript** - Type safety
- **Tailwind CSS 4** - Styling
- **MDX** - Markdown with React components
- **Mermaid** - Diagram and flowchart support
- **Giscus** - GitHub Discussions powered comments
- **remark-gfm** - GitHub Flavored Markdown (tables, etc.)
- **react-syntax-highlighter** - Code syntax highlighting
- **YAML** - Configuration files
- **shadcn/ui** - UI components

---

## 📄 License

**MIT License** - Free to use for personal and commercial projects!

Feel free to:

- ✅ Use for your portfolio
- ✅ Modify as you like
- ✅ Deploy anywhere
- ✅ Remove attribution (optional, but appreciated!)

---

## 🤝 Contributing

Found a bug? Have a feature idea? Contributions are welcome!

1. Fork the repository
2. Create your feature branch
3. Submit a pull request

---

## 💡 Tips

- Update `domain` in `src/config/site.yaml` for proper SEO
- Add your resume PDF to `public/resume.pdf`
- Add project images to `public/projects/` for card thumbnails
- Use mermaid diagrams to visualize architecture
- Use markdown tables for tech stacks and comparisons
- Customize colors in `src/app/globals.css`
- Write regularly - fresh content helps SEO!
- Check `projectPrompt.txt` for portfolio entry template

### Setting Up Comments (Giscus)

**Quick Setup:**

1. Create a public GitHub repository for discussions
2. Enable Discussions in repo settings
3. Install [Giscus app](https://github.com/apps/giscus)
4. Go to [giscus.app](https://giscus.app) and configure:
   - Select your repository
   - Choose "pathname" mapping
   - Create categories: "Blog Comments" and "Project Discussions"
   - Copy the configuration values
5. Update `src/components/Giscus.tsx` with your values:
   - `data-repo`
   - `data-repo-id`
   - `data-category-id` for both categories

**Note:** Giscus IDs are safe to commit - they're public identifiers, not secrets!

📖 **[Read the detailed setup guide](https://tejas.mandhare.com/blog/adding-giscus-comments-portfolio)** - Complete walkthrough with code examples, troubleshooting, and best practices.

---

## 🌟 Show Your Support

If you find this template helpful:

- ⭐ Star this repository
- 🐛 Report bugs
- 💡 Suggest features
- 🔀 Share with others

---

## 📞 Need Help?

- Check [docs/](./docs/) for documentation
- Open an [issue](https://github.com/yourusername/portfolio-next/issues)
- Join discussions

---

<div align="center">

**Built with ❤️ for the open source community**

[Demo](https://your-demo.vercel.app) • [Documentation](./docs/) • [Issues](https://github.com/yourusername/portfolio-next/issues)

</div>

---

**Ready to build your portfolio?** Clone this repo and make it yours! 🚀
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