新粗野主义视觉风格:粗边框、偏移阴影、rounded-base(0px)圆角,颜色以 CSS 变量定义在 :root 和 .dark 中
Portfolio (YubieTheSAVAGE) — Next.js 作品集模板
作者 YubieTheSAVAGE
基于 neobrutalism-templates/portfolio 的 Next.js + Tailwind 作品集模板,采用新粗野主义风格,包含首页、关于和工作三个页面,内容由 src/data 下的数据文件驱动。
看看你的网站会是什么样
浏览真实页面截图,比较内容排版与手机效果。点击下方缩略图切换,放大查看整页细节。
全部页面与视图 3
截图用于了解视觉与布局,交互效果请以实际项目为准。
值得关注的模板亮点
从已有项目资料中,快速了解它的特点。
三个页面:首页、关于、工作,导航由 src/data/nav.ts 数据驱动,滚动时隐藏/显示
使用 next-themes 实现跟随系统的明暗主题切换,偏好持久化
使用 next-view-transitions 实现页面切换过渡动画,内部链接需使用其 <Link> 组件
内容数据化:经历、技能、项目分别由 src/data 下的 experience.ts、skills.ts、projects.ts 驱动
内置 sitemap.ts 和 robots.ts 生成 /sitemap.xml 与 /robots.txt
模板详细介绍
这是一个新粗野主义(neobrutalism)风格的 Next.js + Tailwind 作品集模板,基于 neobrutalism-templates/portfolio 模板构建,使用粗边框、扁平阴影和清晰的字体层级来展示作品与经历。
模板提供三个页面:首页(/)展示简介、技术栈和社交/联系方式;关于页(/about)展示个人简介、按类别划分的技能以及包含日期和链接的工作经历;工作页(/work)以卡片形式展示项目,包含预览图以及可选的“Visit”和“Github”链接。导航由 src/data/nav.ts 数据驱动,并在向下滚动时隐藏、向上滚动时显示。
主题方面,使用 next-themes 实现跟随系统的明暗切换,切换按钮位于导航栏,偏好会被持久化;所有新粗野主义颜色以 CSS 变量形式定义在 src/app/globals.css 的 :root 和 .dark 中。页面切换使用 next-view-transitions 实现过渡动画,内部链接需使用该库的 <Link> 组件。
关于页的经历数据来自 src/data/experience.ts,每条包含公司(可选网站链接)、职位、日期范围和描述(支持多段,按换行拆分)。技能数据来自 src/data/skills.ts,每个技能有名称和 iconKey,由 SkillIcon 映射到对应的 Simple Icons 图标,悬停显示提示;开发环境下可校验 UI 中的技能是否在 RESUME_SKILL_NAMES 列表中。工作页项目定义在 src/data/projects.ts,包含 name、description、previewImage 以及可选的 liveLink 和 repoUrl,卡片使用 Next.js Image 和固定宽高比。
样式方面,使用 Montserrat 字体,tw-animate-css 提供入场动画(fade-in、slide-in、zoom-in)并在关于页和工作页设置错开延迟,globals.css 中定义了明暗主题的自定义滚动条颜色。SEO 方面,src/app/sitemap.ts 生成 /sitemap.xml(使用 NEXT_PUBLIC_SITE_URL),src/app/robots.ts 提供 /robots.txt 允许所有爬虫并指向站点地图。README 未提供关于构建产物、部署平台或性能表现的说明。
适合你的项目吗?
适用场景
- 个人开发者或设计师搭建作品集网站,展示项目、技能和工作经历
- 希望使用新粗野主义风格快速起步的 Next.js 项目
- 需要明暗主题切换和页面过渡动画的作品集站点
- 通过数据文件维护内容、避免频繁修改页面组件的静态站点
适合人群
- 熟悉 Next.js App Router 和 Tailwind CSS 的开发者
- 偏好新粗野主义视觉风格的个人作品集需求
- 希望通过编辑 src/data 下数据文件来更新内容的用户
- 需要明暗主题和页面过渡动画的静态站点
上手与定制指南
结合仓库当前版本的说明,按下面的资料检查内容、配置与运行要求。
- 1
项目使用 pnpm(见 package.json 的 packageManager),同时存在 bun.lock,也可使用 bun 安装依赖
- 2
安装依赖:pnpm i 或 bun install;本地运行:pnpm dev 或 bun run dev
- 3
首页文案在 src/app/page.tsx 编辑,社交链接在 src/components/links.tsx 的 links 数组中配置
- 4
经历、技能、项目分别编辑 src/data/experience.ts、src/data/skills.ts、src/data/projects.ts;项目预览图放在 public/ 并设置 previewImage 路径
- 5
工作页预览图默认宽高比为 71/26(对应 710×260),可在 src/app/work/page.tsx 中调整 AspectRatio 的 ratio 属性
授权与来源资料
使用条件与限制
免费使用 · 保留许可声明本次收录的是公开仓库中采用 MIT 许可的免费版本;免费范围为该版本代码,不代表外部服务或第三方素材免费。
使用时需要遵守
- 允许免费使用、修改、商用和分发该版本代码。
- 分发代码副本或实质性部分时,保留原作者版权声明和完整 MIT 许可声明。
- 代码按现状提供;担保与责任限制以原许可证及适用法律为准。
额外费用与待核对事项
- 演示图片、字体、图标及其他第三方素材需按各自许可核对,不能仅凭代码的 MIT 许可判断。
- 域名、托管、数据库、支付或 AI 等外部服务可能另外收费。
查看原文依据
https://github.com/YubieTheSAVAGE/Portfolio/blob/main/LICENSEhttps://github.com/YubieTheSAVAGE/Portfolio/blob/main/README.mdPermission is hereby granted, free of charge
许可证原文
DeepSeek 根据仓库许可证和 README 整理 ·2026-10-14。结果仅覆盖已读取资料,依赖、图片、字体及后续条款变更以各自原文为准。
项目核对记录与介绍依据
模板资料
- 来源平台
- GitHub
- 资料与维护参考分
- 资料较完整 · 80 / 100
- 技术栈
- Next.js · React
- 网站类型
- 作品集
这个分数如何计算
本站按许可资料(最高30分)、演示链接(12分)、预览图(10分)、Star数(15分)、记录的维护时间(15分)、描述完整度(8分)、功能记录(5分)和分类资料(5分)计算。它不是代码、安全或性能测试,也不是 Google 评分;有链接不代表已实测可用。
这个项目需要核对什么
- 记录的仓库更新时间
- 2026-05-05
- 截图检查日期
- 2026-10-14
已收录演示链接。请用你的内容与屏幕尺寸检查;有演示不代表表单、认证或支付已经可用。
目录记录的主要技术栈是 Next.js。请通过依赖清单和锁文件核对实际版本与托管要求。这些说明基于收录资料,不代表代码审计或部署实测。
查看具体选型方法 →介绍的制作与核对状态
介绍由 AI 辅助整理目录与仓库资料。仓库作者不等于这篇介绍的审核者。
审核声明: codex-user-requested-batch-review-20261015 · 2026-10-15
查看当时使用的来源资料
SHA-256: e206051fd0304511762f17b29362f902f9a7165a3e8c4980254c78206476e443
2026-10-14T17:00:52.123Z
来源文件 / 仓库<img src="public/preview.png" alt="Portfolio preview" width="710" />
# Portfolio
A **neobrutalism-styled** Next.js + Tailwind portfolio, based on the [neobrutalism-templates/portfolio](https://github.com/neobrutalism-templates/portfolio) template. It uses bold borders, flat shadows, and a clear typographic hierarchy to present your work and experience.
---
## Features
### Multi-page structure
- **Home** (`/`) — Intro, tech stack, and social/contact links.
- **About** (`/about`) — Bio, skills by category, and work experience with dates and links.
- **Work** (`/work`) — Project cards with preview images and optional “Visit” / “Github” links.
Navigation is data-driven from `src/data/nav.ts`. The nav bar hides on scroll-down and shows on scroll-up for a cleaner reading experience.
### Theme (light / dark)
- **next-themes** powers a system-aware light/dark toggle.
- A theme switcher (sun/moon) lives in the nav; preference is persisted.
- All neobrutalism colors are defined as CSS variables in `src/app/globals.css` for both `:root` (light) and `.dark`, so the whole site respects the active theme.
### View transitions
- **next-view-transitions** is used for smooth page changes.
- Internal links use the library’s `<Link>` so route changes are animated instead of full reloads.
### About page: experience & skills
- **Experience** — Entries come from `src/data/experience.ts`. Each role has company (optional website link), role title, date range, and a description that supports multiple paragraphs (split by newlines).
- **Skills** — Categories and items are defined in `src/data/skills.ts`. Each skill has a name and an `iconKey` used by `SkillIcon` to show the correct Simple Icons icon. Tooltips show the skill name on hover. In development, the app can warn if a skill in the UI is not in the canonical resume list (`RESUME_SKILL_NAMES`).
- **Highlight** — The `<Highlight>` component in `src/components/ui/highlight.tsx` is used for emphasis in text (default marker style, or `border` / `subtle` variants).
### Work page: projects
- Projects are defined in `src/data/projects.ts`: `name`, `description`, `previewImage`, and optional `liveLink` and `repoUrl`.
- Each project is rendered as a card with an image (via Next.js `Image` and a fixed aspect ratio), description, and “Visit” / “Github” buttons when the URLs are set.
### Styling and UX
- **Neobrutalism** — Strong borders, offset box shadows, and `rounded-base` (0px) for a blunt, grid-like look. Custom design tokens (e.g. `--main`, `--border`, `--shadow`) drive the style.
- **Font** — Montserrat (Google Font) is applied in the root layout.
- **Animations** — `tw-animate-css` is used for entrance animations (fade-in, slide-in, zoom-in) with staggered delays on the About and Work pages.
- **Scrollbar** — Custom scrollbar colors for light and dark themes in `globals.css`.
---
## How it works
1. **Layout** (`src/app/layout.tsx`) — Wraps the app with `ViewTransitions`, `ThemeProvider`, and a fixed `Nav`. Page content is rendered in a constrained main area below the nav.
2. **Content** — Copy and structure live in the page components; reusable content (nav, projects, experience, skills, links) is driven by files in `src/data/` and components in `src/components/` and `src/components/sections/`.
3. **Routing** — Standard Next.js App Router: `src/app/page.tsx` (home), `src/app/about/page.tsx`, `src/app/work/page.tsx`. The nav uses `usePathname()` to highlight the active route.
4. **Icons** — Social/tech icons use `@icons-pack/react-simple-icons`; the About skills use a custom `SkillIcon` that maps `iconKey` to the correct Simple Icon.
### SEO & Google indexing
- **Sitemap** — `src/app/sitemap.ts` generates `/sitemap.xml` with Home, About, and Work (uses `NEXT_PUBLIC_SITE_URL`).
- **Robots** — `src/app/robots.ts` serves `/robots.txt` allowing all crawlers and pointing to the sitemap.
- To **show up on Google**: deploy the site, then go to [Google Search Console](https://search.google.com/search-console), add the property (e.g. `https://boudiba.me`), and submit the sitemap URL (`https://boudiba.me/sitemap.xml`). Use “URL inspection” → “Request indexing” for the homepage to speed up the first crawl.
---
## Get started
You can [create a new repo](https://github.com/neobrutalism-templates/portfolio/generate) from the original template, or clone this repo.
### Installation
This project uses **pnpm** (see `packageManager` in `package.json`). A `bun.lock` is also present, so you can use **bun** if you prefer.
```bash
pnpm i
# or
bun install
```
### Run locally
```bash
pnpm dev
# or
bun run dev
```
---
## Config
### Global
- **Metadata** — In `src/app/layout.tsx`, set `metadata` (e.g. `title`, `description`).
- **Favicon** — Replace `src/app/favicon.ico`.
### Home page
- **Copy** — Edit `src/app/page.tsx` (name, role, bio, tech stack array).
- **Links** — In `src/components/links.tsx`, edit the `links` array. Each entry needs `icon` (from `@icons-pack/react-simple-icons`) and `href`. Use the [Simple Icons](https://simpleicons.org/) site and import with the `Si` prefix (e.g. `SiGithub`).
### Nav
- **Routes** — Edit `src/data/nav.ts` (`NAV_LINKS`: `path` and `text`).
### About page
- **Experience** — Edit `src/data/experience.ts`. Each entry: `company`, `role`, `description` (multi-line string), `startDate`, `endDate`, optional `website`.
- **Skills** — Edit `src/data/skills.ts`. Adjust the `skills` object (categories and `{ name, iconKey }`). Keep `RESUME_SKILL_NAMES` in sync if you use the dev-only validation. Icon keys must match what `SkillIcon` supports (e.g. Simple Icons slug style).
### Work page
- **Projects** — Edit `src/data/projects.ts`. Each project: `name`, `description`, `previewImage`, optional `liveLink`, optional `repoUrl`.
- **Preview images** — Put assets in `public/` and set `previewImage` to `'/' + filename`, e.g. `previewImage: '/my-project.png'`.
- **Aspect ratio** — In `src/app/work/page.tsx`, the preview uses `<AspectRatio ratio={71 / 26}>`. Change the `ratio` prop if your images use a different aspect ratio (default assumes 710×260).
### Styling
- **Neobrutalism** — To change colors or tokens, edit `:root` and `.dark` in `src/app/globals.css`. For more options, see the [styling docs](https://neobrutalism.dev/styling) and copy the desired setup into your CSS.
---
## License
See [LICENSE](LICENSE).
看看同类模板
对比同技术栈与用途的模板,找到更适合的视觉与内容结构。

react-resume-template
A personal resume website template built with React.js, Typescript, Next.js, and styled with Tailwind css
Next.js · 作品集

nxt-lnk
Custom bio links for creatives who love coding. A perfect custom alternative for linktree, bio and other short…
Next.js · 作品集

sylph
A minimal portfolio template.
Next.js · 作品集

sleek-portfolio
sleek-portfolio 是一个面向开发者个人品牌展示的现代作品集模板,基于 Next.js 15、TypeScript、Tailwind CSS 和 Shadcn UI 构建。
Next.js · 作品集

research-website-template
React + Next.js template for research websites (for PhD students, researchers, etc)
Next.js · 作品集

shadcn-portfolio
shadcn-portfolio 是一个面向开发者的作品集模板,技术栈为 Next.js 15、shadcn/ui、Tailwind CSS 和 Framer Motion。
Next.js · 作品集
