Case study· 2026
LvJi 履历系统
一份结构化数据支撑完整履历、简历版本与作品展示,不重复维护文案。
- 数据文件
- 3
- 简历版本
- 3
- 作品案例
- 3
2026-05-26内容建模Next.js产品设计
项目目标
LvJi 用于统一管理个人职业资产,把工作经历、个人项目、简历版本与作品案例组织成一套长期可维护的职业内容系统。
它不是简历生成器,而是一个“职业内容系统”:
- 用 YAML 保存稳定、可查询、可排序的履历事实
- 用 Markdown 承载简历交付物与案例正文
- 同一份主数据派生出完整履历、投递简历与作品案例
核心设计原则
1. 单一履历主数据源
履历事实只维护一份:
site.yaml:身份资料与首页指标career.yaml:公司 → 项目 → 案例skills.yaml:技能体系
工作经历、个人项目、作品案例都从同一份数据派生,不再维护第二套文案。
2. 结构化与叙事分层
YAML 负责结构化:
- 节点类型与时间区间
- 展示优先级与排序
- 技能标签、案例摘要与指标
Markdown 负责叙事:
- 简历交付物
- 案例正文
- 深度设计说明
这种分层既保留了页面自动派生能力,也保留了人写文档的表达空间。
3. 多视图消费同一份数据
同一条项目在不同页面消费不同字段:
/career:概览用key_highlights,详情用description + highlights/works:卡片用case.summary / metrics / tags/works/[slug]:正文来自content/works/*.md,目录由##自动生成/resume:三份 Markdown 投递版本,可切换与打印
数据模型
公司 → 项目
公司是一级节点(kind: company),项目挂在公司下;独立项目收进 kind: personal 的「个人项目」容器,与工作项目共用同一套字段。
每个项目可选一个 case 块,声明它是否有案例页、用哪种色调、展示哪些指标。没有 case 的项目只出现在履历页。
Markdown 内容
Markdown 文件分两类:
content/works/*.md:案例正文,只读展示content/resumes/*.md:简历交付物,只读展示
页面结构
/
定位、指标、三个案例与经历时间线。
/career
详细履历。概览只看结论,详情展开背景、决策与成果。
/resume
三份投递版本切换,可直接打印或存为 PDF。
/works
作品索引,支持搜索、类型与标签筛选。
/works/[slug]
案例详情,左侧目录由正文 ## 标题自动生成。
设计取舍
- 公司作为容器、项目作为内容:同时表达全职项目与独立项目
- 默认值规则(slug / source / title / summary / 年份):减少字段重复
- 案例正文留在 Markdown:长文不适合塞进 YAML,同时保留自动目录
- 校验脚本兜底:引用完整性、枚举、文件存在性在构建前检查