Next.jsReactPortfolio

nextjs-portfolio-template — Next.js Portfolio Template

By AbdulBasit313

Flexy Dev is a developer portfolio template built on Next.js and Tailwind CSS, featuring sections for tagline, projects, services, testimonials, and skills, with a free MIT-licensed version available.

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

What stands out

A quick read of the recorded project description.

01

Built with Next.js and Tailwind CSS, with the repository releasing a free version under the MIT license

02

Includes common portfolio sections such as tagline, projects, services, testimonials, skills, and a contact form

03

Built-in robots.ts and sitemap.ts, with configuration entry points for Open Graph, Twitter share images, and metadata

04

Project data is stored in the content directory, and service and skill data in appData, making it easy to replace with personal content

05

Three sets of theme variables are provided in global.css to adjust colors and styles

06

The contact form connects to Formspree by default, with the endpoint configured via environment variables, and can also be replaced with other form services

Template Details

Flexy Dev is a personal portfolio template for developers, built with Next.js and Tailwind CSS, with the repository releasing a free version under the MIT license. The template provides sections for tagline (Hero), projects, services, client testimonials, skills, and a contact form, and includes SEO-related files such as robots.ts and sitemap.ts, as well as configuration entry points for Open Graph and Twitter share images.

In terms of content organization, project data is placed in the content directory, while data such as services and skills is placed in appData; data reading is handled by src/services via the fs module. Components are centralized in the Components directory, and type definitions are located in src/lib/types.d.ts. For styling, three sets of theme variables are provided in global.css and can be adjusted as needed. The contact form connects to Formspree by default; you need to apply for a form endpoint yourself and write it into environment variables, or you can replace it with Formcarry, Getform, or a self-hosted endpoint.

Limitations to note: the free version does not include the MDX blog system; that feature is only available in the paid version offered by the author. The paid upgrade mentioned in the README is outside the scope of this listing. The Unsplash images used in the demo require configuring the allowed image domains in next.config.js; if you switch image hosts, you must update this accordingly. External services such as form services, domains, and hosting may incur additional costs, and 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

  • Developers building a personal portfolio website to showcase projects, skills, and services
  • Personal sites that need basic SEO configuration (sitemap, robots, share images)
  • Those who prefer to maintain project and service data as content files rather than relying on a backend system
  • Those who need a contact form to receive visitor messages and are willing to configure a third-party form service themselves

Suitable For

  • Frontend or full-stack developers who want to quickly build a personal portfolio
  • Users familiar with Next.js and Tailwind CSS who can modify components and data files themselves
  • Personal sites that accept using a third-party form service to handle contact form submissions
  • Users who need MIT-licensed free code and can deploy it to their own hosting environment

Getting started & customization

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

  1. 1

    After cloning the repository, run npm install (or yarn install), then start the development server with npm run dev; the default address is http://localhost:3000

  2. 2

    Create .env.local in the root directory and at least set NEXT_PUBLIC_SITE_URL; when using Formspree, also set CONTACT_FORM_ACTION_URL

  3. 3

    Create a form on Formspree and obtain the endpoint URL, and ensure the form field names (name, email, subject, message) match what the server expects

  4. 4

    If using an external image host (such as Unsplash), configure the allowed image hostname in next.config.js

  5. 5

    Before deployment, complete the environment variables in .env.local on the hosting platform and change NEXT_PUBLIC_SITE_URL to the actual site address

Read repository instructions

License & source material

Usage conditions & limitations

Free to use · keep license notice

This listing covers the free version under the MIT license in the 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

  • The code of this version may be used, modified, used commercially, and distributed 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 free version does not include the MDX blog system; that feature is only available in the paid version offered by the author. If you need blog functionality, you must purchase the paid version separately.
  • The contact form relies on the third-party service Formspree by default; you need to register an account and obtain a form endpoint URL yourself, and it may be subject to its free quota and terms.
  • The demo images come from Unsplash, and the allowed image domains must be configured in next.config.js; if you change the image host, you must update the configuration accordingly, and third-party asset licenses must be checked yourself.
  • The README mentions the Formspree form service; actual submissions require configuring a service endpoint, and its usage quotas and fees must be checked separately.
  • The project materials mention an optional paid version or features; this listing only covers the public free code and does not include paid upgrades.
  • 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

In premium template you will get one extra feature - 📝 MDX Blog System with code snippets

Original README

To integrate **Formspree** into your contact form, follow these simple steps:

Original README

For demo purposes, we’re using Unsplash images. You can use any image host, but be sure to add the hostname in your configuration.

Original README
https://github.com/AbdulBasit313/nextjs-portfolio-template/blob/main/LICENSEhttps://github.com/AbdulBasit313/nextjs-portfolio-template/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 · 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-04-15
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 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: 1529dfd67c099b9f3dd45ae3017bc9b8f0c93794f4c4888a395dfcc6b7ab651c

2026-10-03T00:37:28.938Z

Source file / repository
# Flexy Dev - Next.js Portfolio Template

![](https://badges.frapsoft.com/os/v1/open-source.svg?v=103)

![](https://img.shields.io/badge/license-MIT-blue.svg)

[![Premium Version](https://img.shields.io/badge/PREMIUM_%20VERSION-AVAILABLE-%2300C7B7?style=for-the-badge&logo=stellar&logoColor=white)](https://basit313.gumroad.com/l/nextjs-developer-portfolio-template)

✨ **Professional Portfolio Template** built with Next.js 15 • 🚀 Tailwind V4 • 📱 Fully Responsive • 🎨 Modern Design • 🔍 SEO Friendly

![Next.js Portfolio Template Hero Section](https://ik.imagekit.io/cpnw7c0xpe/Tailwind%20Components/Templates/Flexy%20Dev%20Cover%20New.png?updatedAt=1741812978958)

## 🚀 How to Run the Project

Follow these steps to set up and run the project locally:

### 1️⃣ Install Dependencies

After downloading/cloning the project, navigate to the project directory and run:

```bash
npm install
# or
yarn install
```

This will install all required dependencies.

### 2️⃣ Start the Development Server

Once the installation is complete, start the server with:

```bash
npm run dev
# or
yarn dev
```

Your portfolio will now be running at `http://localhost:3000`.

### ⚠️ Important: Set Up Environment Variables

Before running the project, make sure to create a `.env.local` file in the root directory and add the following:

```env
NEXT_PUBLIC_SITE_URL=http://localhost:3000
```

This ensures proper configuration of environment variables.

## Folder Structure Overview

![Next.js portfolio template folder structure overview](https://ik.imagekit.io/cpnw7c0xpe/Tailwind%20Components/Templates/Folder%20Structure%20Overview.png?updatedAt=1741684501824)

- **content:** Contains data for projects. Add any additional section data here.
- **Components:** All the UI components of app e.g. navbar, hero, projects, footer etc
- **src/services:** Retrieves data (e.g., projects, testimonials) using the fs module. Update this file if you change or modify the data source.
- **src/assets:** Stores all assets, including images and icons, additionally you can add audio, video, and local fonts here.
- **src/hooks:** Holds custom hooks.
- **src/lib/types.d.ts:** Contains TypeScript types.
- **util/icons:** Centralizes icons and images for easy updates.
- **appData:** Includes app data, such as services and skills (including icons).
- **app/page.tsx:** Root file of the app.
- **app/layout.tsx:** Manages global and SEO configurations (e.g., fonts, head tags, analytics).

## Customizing the Template

1. Navbar
   - File: navbar.tsx
     - Update the navbar name from john_doe to your name.
2. Hero Section
   - File: hero.tsx
     - Edit the title, description, and optionally, replace the SVG with your image.
3. Projects Section
   - File: content/projects
     - Replace the dummy projects with your own.
     - If you are modifying the properties or going to add new ones, then update types in types.d.ts.
4. Services Section
   - File: appData
     - Add your services with relevant icons. If icons are missing, contact me on LinkedIn or via email.
5. Skills Section
   - File: appData
     - Add your skills with relevant icons. Contact if you can’t find specific icons online.
6. Footer
   - Location: Visit [Flexy UI](http://flexyui.com/)
     - You can replace the default footer or choose from additional variants [from Flexy UI](http://flexyui.com/) (simple or column footer).

In the same manner, you can also update the Contact and Testimonial sections. The code is self-explanatory.

![Project section](https://ik.imagekit.io/cpnw7c0xpe/Tailwind%20Components/Templates/flexy-dev-portfolio-portfolio.png?updatedAt=1739182152345)

## 📨 Configuring the Contact Section

To integrate **Formspree** into your contact form, follow these simple steps:

1. Go to the [Formspree website](https://formspree.io/) and create a new project.
2. Add a new form (you'll get a unique form endpoint URL).
3. Copy the form endpoint and paste it into your `.env.local` file like this:

```env
CONTACT_FORM_ACTION_URL=https://formspree.io/f/your-form-id
```

> Note: This URL is just an endpoint to receive your form submissions. You can use any service of your choice (like Formcarry, Getform, or your own API) if you're not using Formspree.

Make sure the name attributes in your form match what your form handler or service expects (e.g., `name`, `email`, `subject`, `message`).

## Configuring Online Images

To display online images (e.g., from a CDN) in your deployed project, configure allowed image hostnames in next.config.js.

For demo purposes, we’re using Unsplash images. You can use any image host, but be sure to add the hostname in your configuration.

Replace 'unsplash' with your own image `hostnames` if using a different service or add a new object.

## Theming and Styling

We use Tailwind CSS for styling. In `global.css`, you can customize theme variables for all 3 themes.

## SEO & Branding

1. Favicon: Replace the default favicon with your own.
2. Metadata: Update meta title and description in layout.tsx.
3. SEO Files: robots.ts and sitemap.ts are included for search engines.
4. Open Graph Images:
   - Replace `opengraph-image.png` and `twitter-image.png `with custom images.
   - Alternatively, edit `opengraph-image.tsx` to generate images dynamically.

### If you find this template helpful, don't forget to ⭐️ the repo!

## 💎 Upgrade to Premium

✨ **Premium Features Include:**

In premium template you will get one extra feature

- 📝 MDX Blog System with code snippets

[Get Premium Version](https://basit313.gumroad.com/l/nextjs-developer-portfolio-template) | [View Premium Demo](https://nextjs-dev-portfolio.netlify.app/)

## 🆓 vs 💎 Premium

| **Feature**       | **Free Version** | **Premium Version** |
| ----------------- | ---------------- | ------------------- |
| Blog System (MDX) | ❌               | ✅ Full Integration |
| UI Components     | 20               | 25+                 |
| Email Support     | ✅               | ✅ Priority         |

![footer section](https://ik.imagekit.io/cpnw7c0xpe/Tailwind%20Components/Templates/flexy-dev-footer.png?updatedAt=1741813601842)

## Analytics

You can integrate analytics easily:

1. Simple Analytics or Vercel Analytics: Quick and easy to set up.
2. Google Analytics 4: Also straightforward.

## Deployment Notes

Before deploying, add environment variables from .env.local wherever you are deploying:

1. NEXT_PUBLIC_SITE_URL: Set to your actual site URL (e.g., https://johndoe.com).
1. CONTACT_FORM_ACTION_URL: Your [formspree](https://formspree.io/) url.
1. For local development, use the localhost URL.

For any query or suggestion, I am available on [LinkedIn](https://www.linkedin.com/in/abdulbasitprofile/) or email me at [email protected]
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