Communitygithub.com

yousefnaim/yousefnaim-protofolio

完整的新粗野主义风格作品集工具包(React + Vite)——支持英阿双语、RTL、明暗主题、案例研究覆盖层、生成音乐与悬停音效,以及用于 Vercel 的服务端 RAG 聊天助手。适用于构建、重设样式或扩展该风格的个人作品集。

yousefnaim-protofolio 是什么?

这是一个功能丰富的个人作品集模板工具包,专为新粗野主义风格设计,基于 React + Vite 构建。它提供了一整套设计系统,包括扁平饱和色彩、3px 粗边框、实体偏移阴影和倾斜卡片等标志性视觉元素。工具包内建双语(英语/阿拉伯语)支持,并自动处理从右到左(RTL)排版和明暗主题切换,且无闪烁问题。除了视觉组件,它还集成了生成式音乐和悬停音效系统,使用 Web Audio API 实现,无需外部音频文件。此外,工具包包含一个由 Vercel 无服务器函数驱动的 RAG 聊天助手,该助手通过 BM25 算法和 Gemini 嵌入模型对作品集所有者数据进行检索增强生成,并能优雅地处理未知问题。所有 API 密钥仅存储在服务端,确保安全。工具包还包含详细的引用文档,涵盖设计规范、交互与音效、国际化与 RTL、助手 RAG 逻辑以及部署指南,是开发者和 AI 代理快速搭建或定制个人网站的理想起点。

兼容平台~Claude Code~Codex CLI~Cursor✓Gemini CLI
npx skills add yousefnaim/yousefnaim-protofolio

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

新粗野主义作品集工具包

一个从生产站点提取的、经过完整测试的作品集模板。所有内容都在 assets/ 中——将其复制到一个全新的 Vite + React 项目中,替换占位数据为所有者自己的信息,然后即可部署。该工具包已验证可通过 vite build 从零构建,且渲染时无控制台错误。

您将获得

  • 设计系统 —— 扁平饱和色彩、3px 边框、实体偏移阴影、倾斜磁贴(assets/src/brutal/brutal.css,作用域限定在 .nb 下)。
  • 页面区块 —— 加载器 · 固定导航栏(滚动监听、主题/语言/音效切换、移动端抽屉菜单) · 带逐字母悬停效果的英雄区 · 关于我 · 作品网格搭配全屏案例研究覆盖层(上一项/下一项、键盘操作、焦点恢复) · 技术栈 · 经历手风琴 · 联系表单 · 带实时本地时钟的页脚。
  • 双语支持 + RTL —— 英语/阿拉伯语,使用逻辑 CSS 属性;明暗主题切换无闪烁。
  • 音效 —— 生成式 124 BPM 合成波循环乐和悬停/点击音效(每个英雄区字母播放一个五声音阶音符)。无需音频文件,无需许可。
  • 助手 —— 基于 api/chat.js 的浮动聊天框:对所有者自身数据进行 RAG(阿拉伯语感知的 BM25 + Gemini 嵌入),接地气回答,模型回退,同源+速率限制。API 密钥永远不会到达浏览器。
  • 部署配置 —— vercel.json(SPA 重写)、.vercelignore。

快速开始(新项目)

  1. npm create vite@latest my-portfolio -- --template react 并安装 assets/package.deps.json 中列出的依赖(i18next react-i18next lenis framer-motion lucide-react @emailjs/browser @google/genai)。
  2. 将 assets/ 的内容复制到项目根目录(合并 src/,替换 index.html 和 vite.config.js,添加 api/、vercel.json、.vercelignore)。删除默认的 src/App.css/index.css 导入 —— 工具包通过 brutal.css 自带 CSS。
  3. 填写所有者数据(参见 需个性化设置的内容)。
  4. 将肖像放在 src/Imgs/portrait.jpg,项目截图放在 public/projects/ 下(WebP 格式,宽度 ≤1280px)。
  5. npm run dev → 检查明/暗主题、英文/阿拉伯语、375px 和 1440px 宽度。npx vite build 必须通过。
  6. 部署:参见 references/deploy-and-secrets.md。

需个性化设置的内容(唯一包含内容的文件)

文件需填写的内容
src/data/siteFacts.js姓名(英/阿)、英雄名拆分、导航缩写、所在地、时区、联系链接、EmailJS 公开 ID、技术栈列、工具
src/data/projectsMeta.js项目:标题、标签、线上链接(或 null)、order、i18nIndex
src/data/projectImages.js每个项目的截图;第一张图片为卡片封面
src/i18n/locales/{en,ar}.json所有文案 —— 英雄陈述、关于我/统计、亮点、经历、每个项目的副标题/描述/屏幕标签、项目“类型”、联系文本、助手提示词
index.html<title>、描述、favicon

填写规则:只填所有者能确认的事实;切勿编造客户、数字、日期或链接;技术名称在两种语言中保持英文;语言文件中的 projects.items[i] 必须与 i18nIndex 对齐。

设计语言(概述 —— 精确值见 references/design-system-spec.md)

  • 仅使用扁平颜色。 无渐变、发光、模糊、玻璃或紫色“AI”外观。深度 = 边框 + 硬阴影。
  • 边框 3px solid var(--nb-line) · 阴影 实体偏移(5px/8px 8px 0,悬停时 12–14px) · 倾斜 -2°…2°,悬停时回正。
  • 字体: Bricolage Grotesque 800 大写用于展示,Space Grotesk 用于正文,JetBrains Mono 大写用于标签。阿拉伯语:Cairo 700–900,无字距,无大写。
  • 对比度规则: 饱和填充上的文字始终为 #111,且两种主题下边框均为 #111;只有中性表面会随主题切换。
  • 区块节奏: 英雄区黄色 → 关于我纸色 → 作品蓝色 → 技术栈纸色 → 经历丁香色 → 联系粉色 → 页脚黑色。通过修改 --nb-* 令牌重新着色;保持节奏。

工程规则(编辑时请遵守)

  • 在数据属性中显示状态(data-reveal → data-in),绝不用类名 —— React 重新渲染会覆盖类名。
  • 案例覆盖层需要 data-lenis-prevent,否则 Lenis 会阻止其内部的滚轮事件。任何可滚动的覆盖层(助手聊天、移动端菜单抽屉)也是如此。
  • 使用逻辑 CSS(inline-start/end、margin-inline),在 RTL 中翻转箭头,用 dir="ltr" 包裹数字计数器,绝不对阿拉伯语进行字母间距调整。
  • 切勿在生产代码中调用 localhost —— 浏览器会请求访问者授予本地网络权限。仅在 API URL 环境变量设置后才调用 API。
  • 性能: 懒加载首屏下的区块;WebP 图片使用 loading="lazy";仅对 transform/opacity 进行动画;尊重 prefers-reduced-motion;公共路径上不使用繁重的 3D/UI 库。
  • 密钥: API 密钥仅存储在服务器环境变量中(GEMINI_API_KEY)。绝不为密钥添加 VITE_ 前缀(它会被打包进浏览器)。EmailJS 公开 ID 可以在客户端代码中。
  • 无障碍: 可见焦点环、跳过链接、切换按钮的 aria-pressed、覆盖层的 role="dialog" + 焦点恢复、减少运动支持。

在标记“完成”前进行验证

  1. npx vite build 通过。
  2. 明 + 暗、英 + 阿(RTL)、375px 和 1440px;无水平溢出。
  3. 打开案例研究 → 上一项/下一项/Esc,用鼠标滚轮在其中滚动。
  4. 悬停英雄名和控件(点击一次后)确认音效;切换按钮状态保持。
  5. 如果助手已部署:询问联系问题、列出所有项目的问题以及不在数据中的某个问题(它必须说不知道)。
  6. 预览面板可能被隐藏(动画暂停)—— 通过第二张截图或真实浏览器确认动效。

设计系统产物

  • DESIGN-SYSTEM.md — 概览 + 带有链接的调色板/规则表。
  • design-system/tokens.css 和 tokens.json — 在 React 工具包外部使用的令牌。
  • design-system/styleguide.html — 在线样式指南(在浏览器中打开):带对比度的调色板、字体比例、阴影/倾斜比例、每个组件、动效、做/不做。

参考资料(需要时阅读)

  • references/design-system-spec.md — 精确的设计系统:原则、每种颜色及其位置、对比度数值、字体比例、间距、阴影/边框/倾斜比例、动效令牌、z-index、断点、组件解剖结构和状态。
  • references/design-system.md — 类目录、区块配方、如何重新着色或添加区块。
  • references/interaction-and-sound.md — 悬停/按下行为、显示系统、音乐 + 音效架构和调优。
  • references/i18n-and-rtl.md — 语言环境结构、键值映射、阿拉伯语排版、RTL 检查清单。
  • references/assistant-rag.md — 聊天端点工作原理、知识块、检索调优和提示词。
  • references/deploy-and-secrets.md — GitHub + Vercel 步骤、环境变量、密钥轮换、故障排除。

相关技能