Next.jsReact作品集

nextjs-portfolio-template — Next.js 作品集模板

作者 AbdulBasit313

Flexy Dev 是一个基于 Next.js 与 Tailwind CSS 的开发者作品集模板,包含标语、项目、服务、评价与技能等区块,并提供免费 MIT 版本。

看看你的网站会是什么样

浏览真实页面截图,比较内容排版与手机效果。点击下方缩略图切换,放大查看整页细节。

3 个预览视图
桌面端首页1 / 3
桌面端截图首屏预览

由服务器浏览器实际访问页面后截取。

全部页面与视图 3

截图用于了解视觉与布局,交互效果请以实际项目为准。

采集于 2026-10-03查看来源

值得关注的模板亮点

从已有项目资料中,快速了解它的特点。

01

使用 Next.js 与 Tailwind CSS 构建,仓库以 MIT 许可发布免费版本

02

包含标语、项目、服务、评价、技能与联系表单等作品集常用区块

03

内置 robots.ts 与 sitemap.ts,并提供 Open Graph、Twitter 分享图与 metadata 配置入口

04

项目数据存于 content 目录,服务与技能数据存于 appData,便于替换为个人内容

05

global.css 中提供三套主题变量,可调整配色与样式

06

联系表单默认对接 Formspree,端点通过环境变量配置,也可替换为其他表单服务

模板详细介绍

Flexy Dev 是一个面向开发者的个人作品集模板,使用 Next.js 与 Tailwind CSS 构建,仓库以 MIT 许可发布免费版本。模板提供标语(Hero)、项目、服务、客户评价、技能与联系表单等区块,并包含 robots.ts 与 sitemap.ts 等 SEO 相关文件,以及 Open Graph 与 Twitter 分享图的配置入口。

内容组织上,项目数据放在 content 目录,服务与技能等数据放在 appData,数据读取由 src/services 通过 fs 模块完成;组件集中在 Components 目录,类型定义位于 src/lib/types.d.ts。样式方面在 global.css 中提供三套主题变量,可自行调整。联系表单默认对接 Formspree,需要自行申请表单端点并写入环境变量,也可替换为 Formcarry、Getform 或自建接口。

需要注意的限制:免费版本不包含 MDX 博客系统,该功能仅在作者提供的付费版本中提供;README 中提到的付费升级不在本次收录范围内。演示使用的 Unsplash 图片需要在 next.config.js 中配置允许的图片域名,若更换图床需同步修改。表单服务、域名、托管等外部服务可能产生额外费用,演示图片、字体与图标等第三方素材需按各自许可单独核对。

Next.js作品集

适合你的项目吗?

适用场景

  • 开发者搭建个人作品集网站,展示项目、技能与服务
  • 需要 SEO 基础配置(sitemap、robots、分享图)的个人站点
  • 希望以内容文件方式维护项目与服务数据,而非依赖后台系统
  • 需要联系表单接收访客留言,并愿意自行配置第三方表单服务

适合人群

  • 希望快速搭建个人作品集的前端或全栈开发者
  • 熟悉 Next.js 与 Tailwind CSS、能自行修改组件与数据文件的使用者
  • 接受使用第三方表单服务处理联系表单提交的个人站点
  • 需要 MIT 许可免费代码、可自行部署到自有托管环境的用户

上手与定制指南

结合仓库当前版本的说明,按下面的资料检查内容、配置与运行要求。

  1. 1

    克隆仓库后运行 npm install(或 yarn install),再用 npm run dev 启动开发服务器,默认地址为 http://localhost:3000

  2. 2

    在根目录创建 .env.local,至少设置 NEXT_PUBLIC_SITE_URL;使用 Formspree 时还需设置 CONTACT_FORM_ACTION_URL

  3. 3

    在 Formspree 创建表单并获取端点 URL,同时确保表单字段名(name、email、subject、message)与服务端预期一致

  4. 4

    若使用外部图床(如 Unsplash),需在 next.config.js 中配置允许的图片 hostname

  5. 5

    部署前在托管平台补齐 .env.local 中的环境变量,并将 NEXT_PUBLIC_SITE_URL 改为实际站点地址

查看仓库使用说明

授权与来源资料

使用条件与限制

免费使用 · 保留许可声明

本次收录的是公开仓库中采用 MIT 许可的免费版本;免费范围为该版本代码,不代表外部服务或第三方素材免费。

使用时需要遵守

  • 允许免费使用、修改、商用和分发该版本代码。
  • 分发代码副本或实质性部分时,保留原作者版权声明和完整 MIT 许可声明。
  • 代码按现状提供;担保与责任限制以原许可证及适用法律为准。

额外费用与待核对事项

  • 免费版本不包含 MDX 博客系统,该功能仅在作者提供的付费版本中提供;如需博客功能须另行购买付费版本。
  • 联系表单默认依赖第三方服务 Formspree,需自行注册账号并获取表单端点 URL,可能受其免费额度与条款限制。
  • 演示图片来自 Unsplash,需在 next.config.js 中配置允许的图片域名;更换图床须同步修改配置,第三方素材许可需自行核对。
  • README 提及 Formspree 表单服务;真实提交需配置服务端点,其使用额度与费用需单独核对。
  • 项目资料提及可选付费版本或功能;本次仅收录公开免费代码,不包含付费升级。
  • 演示图片、字体、图标及其他第三方素材需按各自许可核对,不能仅凭代码的 MIT 许可判断。
  • 域名、托管、数据库、支付或 AI 等外部服务可能另外收费。
查看原文依据

Permission is hereby granted, free of charge

许可证原文

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

README 原文

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

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.

README 原文
https://github.com/AbdulBasit313/nextjs-portfolio-template/blob/main/LICENSEhttps://github.com/AbdulBasit313/nextjs-portfolio-template/blob/main/README.md

DeepSeek 根据仓库许可证和 README 整理 ·2026-10-03。结果仅覆盖已读取资料,依赖、图片、字体及后续条款变更以各自原文为准。

项目核对记录与介绍依据

模板资料

来源平台
GitHub
资料与维护参考分
资料较完整 · 81 / 100
技术栈
Next.js · React
网站类型
作品集
这个分数如何计算

本站按许可资料(最高30分)、演示链接(12分)、预览图(10分)、Star数(15分)、记录的维护时间(15分)、描述完整度(8分)、功能记录(5分)和分类资料(5分)计算。它不是代码、安全或性能测试,也不是 Google 评分;有链接不代表已实测可用。

这个项目需要核对什么

记录的仓库更新时间
2025-04-15
截图检查日期
2026-10-03

已收录演示链接。请用你的内容与屏幕尺寸检查;有演示不代表表单、认证或支付已经可用。

目录记录的主要技术栈是 Next.js。请通过依赖清单和锁文件核对实际版本与托管要求。这些说明基于收录资料,不代表代码审计或部署实测。

查看具体选型方法 →

介绍的制作与核对状态

介绍由 AI 辅助整理目录与仓库资料。仓库作者不等于这篇介绍的审核者。

已完成服务器许可规则与 AI 来源核对;未经过人工编辑审核。

查看当时使用的来源资料

SHA-256: 1529dfd67c099b9f3dd45ae3017bc9b8f0c93794f4c4888a395dfcc6b7ab651c

2026-10-03T00:37:28.938Z

来源文件 / 仓库
# 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]
反馈内容错误

看看同类模板

对比同技术栈与用途的模板,找到更适合的视觉与内容结构。