一、总体蓝图(系统架构图)
flowchart LR
subgraph Sources[ 资源源头 ]
A[ 官方文档 \nMDN, web.dev, W3C]
B[ 社区博客 / 媒体 \nSmashing, dev.to]
C[ 课程平台 \nfreeCodeCamp, Frontend Masters]
D[ 工具 / 速查 \nCan I use, DevDocs]
E[ 视频 / 播客 \nYouTube, Pod]
end
subgraph Ingestion[ 采集层 ]
F[RSS/Atom 拉取 ]
G[API 抓取 ]
H[ 手动提交 / 表单 ]
end
subgraph Processing[ 处理层 ]
I[ 内容规范化 \n(标题 / 摘要 / 格式)]
J[ 去重与聚合 \n(URL 指纹 / 相似度)]
K[ 质量评估 \n(规则 + 打分)]
L[ 分类与标签 \n(NLP/ 关键词 / 人工)]
end
subgraph Storage[ 存储层 ]
M[(Postgres/SQLite)]
N[(向量库 \n( 可选,用于语义搜索))]
O[(对象存储 \n 封面 / 截图)]
end
subgraph API[ 服务层 ]
P[GraphQL/REST]
Q[ 全文 / 向量搜索 ]
R[Webhook/ 订阅 ]
end
subgraph UI[ 前端展示 ]
S[ 目录页 / 筛选器 ]
T[ 资源详情 ]
U[ 榜单与精选 ]
V[ 提交入口 / 纠错 ]
W[ 后台 CMS]
end
Sources --> Ingestion --> Processing --> Storage --> API --> UI
二、信息架构(站点地图)
graph TD
Home[ 首页:精选、最新、排行榜 ]
Cat[ 分类:HTML/CSS/JS/ 框架 / 工程化 / 性能 / 可访问性 / 测试 / 面试 ]
Tags[ 标签:React, TypeScript, 性能优化...]
Guides[ 学习路径 / 路线图 ]
Resource[ 资源详情页 ]
Submit[ 提交资源 / 纠错 ]
About[ 关于 / 贡献指南 ]
Home --> Cat --> Resource
Home --> Tags --> Resource
Home --> Guides --> Resource
Home --> Submit
Home --> About
三、核心数据模型(ER 图 + 字段建议)
erDiagram
RESOURCE ||--o{ RESOURCE_TAG : has
RESOURCE }o--|| PROVIDER : from
RESOURCE }o--o{ CATEGORY : belongs
RESOURCE ||--o{ RATING : scored_by
RESOURCE ||--o{ SNAPSHOT : captures
RESOURCE {
uuid id
string title
string url
string type "article|doc|course|tool|video|cheatsheet"
text summary
string level "beginner|intermediate|advanced"
string language "zh|en|..."
string format "text|video|interactive"
string price "free|paid|mixed"
int quality_score
int popularity_score
date published_at
date last_seen_at
boolean is_official
jsonb metadata "时长、作者、章节数、框架版本等"
}
PROVIDER {
uuid id
string name
string site
string region
string contact
boolean is_verified
}
CATEGORY {
uuid id
string name
string slug
}
RESOURCE_TAG {
uuid id
string tag
}
RATING {
uuid id
uuid user_id
uuid resource_id
int upvote
int score "1-5"
text comment
date created_at
}
SNAPSHOT {
uuid id
uuid resource_id
string image_url
date captured_at
}
排序权重(可直接实现)
final_score = 0.45*quality_score + 0.35*popularity_score + 0.2*recency_boostrecency_boost = exp(-days_since_update / 90)(近 3 个月更有权重)- 加权白名单:
is_official ? +10 : +0 - 去重:URL 规范化 +
simhash(title+summary)相似度阈值
四、采集与质量评估规则(精简可执行)
采集
- RSS 优先(速度 + 合法),其次公开 API,最后人工提交(表单)。
- 规范化:拉取标题、摘要、语言、发布时间、作者、封面、主题词。
- 截图:首屏截图(可选,用于卡片展示)。
质量评估(示例 Heuristics)
- 页面可访问性分(Lighthouse a11y ≥ 80 加 2 分)
- 内容深度:字数 / 章节 / 是否含代码示例 / 是否有演示仓库
- 可信度:
is_official、Provider 是否验证、是否长期维护 - 新鲜度:最近更新是否 ≤ 180 天
- 社交信号:Star/ 赞 / 阅读量阈值映射到 0-10
五、前端页面与交互要点
- 筛选器 :分类、标签、难度、语言、格式、价格、官方 / 社区、最近更新。
- 卡片 :标题、出处徽标、简述、难度 / 时长 / 标签、上次更新、评分。
- 榜单 :本周热门、年度最佳、冷门高质。
- 路线图 :初级→中级→高级模块化路径,资源自动按分值填充坑位。
- 可达性 :键盘可操作、深 / 浅色模式、语义化标签。
- 搜索 :关键词 + 语义补全(向量检索可选)。
六、分类清单
以下是高权威的类别与样例资源;
基础与规范
- HTML/CSS/JS 基础:MDN Web Docs、web.dev(Google)、W3C 规范解读
- 现代 CSS:Modern CSS、Smol CSS、CSS Tricks(历史文章宝库)
- 兼容性:Can I use、MDN Compat Data
框架与生态
- React:官方文档、React.dev Beta Docs、TanStack(Query/Router)
- Vue:vuejs.org、Vue School(教程集合)
- Svelte:svelte.dev、Svelte Society
- Next.js / Nuxt:官方文档、公式示例仓库
- 构建工具:Vite、Webpack、Rollup、esbuild 官方文档
工程化
- TypeScript:官方手册、TypeScript Deep Dive
- 包管理:pnpm、npm、Yarn 文档
- 代码质量:ESLint、Prettier、Husky、lint-staged
性能与可访问性
- 性能优化:web.dev/fast、PageSpeed Insights 指南
- 可访问性:WAI-ARIA、Deque University 笔记、Axe 工具教程
测试
- 单元 / 端到端:Jest、Vitest、Testing Library、Playwright、Cypress
网络与安全
- 网络基础:HTTP/HTTP2/HTTP3、Service Worker、Workbox
- 安全:OWASP Cheat Sheet、CSP 指南
UI/ 设计系统
- 设计系统:Material Design、Carbon、Ant Design、Radix UI
- 图形与可视化:D3、ECharts、Chart.js 文档与教程
学习路径与课程
- freeCodeCamp、Frontend Masters、Egghead、Coursera(精选前端专修)
- 优质博客 / 媒体:Smashing Magazine、CSS Wizardry、web.dev/blog、dev.to 前端精选
工具与速查
- DevDocs、TLDR Pages、Regex101、Bundlephobia、unpkg、jsDelivr
小贴士:把“官方文档 / 规范 / 工具速查”设为更高权重,保证列表不被“热点教程”淹没。
七、总结
- 建库 :按上面的 ER 模型创建表;先插入分类 / 标签基础数据。
- 导入种子 :把“分类清单 + 示例站点”导入为
RESOURCE(打is_official标记)。 - 采集器 :做一个 RSS 拉取器(cron),写规范化与去重逻辑。
- 评分器 :实现
final_score,并定期重算(新鲜度会衰减)。 - API:GraphQL/REST 暴露筛选、搜索、分页、榜单三个核心端点。
- 前端 :先做卡片列表 + 筛选器 + 详情页;随后补路线图与提交通道。
- 运营 :配置“用户提交→审核→发布”的后台工作流(轻量 CMS 即可)。