技术决策记录
ADR-001:CNB Git 作为后端数据库
状态:已采纳
决策:使用 CNB Git 仓库存储数据(JSON 文件),不使用传统数据库。
理由:
- 零运维:无需服务器、无需数据库
- 免费使用:CNB 平台免费提供
- 版本管理:Git 内置版本控制和历史追溯
- OpenAPI:CNB 提供完整的 REST API
- 适合场景:信息发布类应用,低频写入、高频读取
- 与 cnb-as-backend 理念一致:CNB 就是后端
局限:
- 写入有延迟(需要 Git Push)
- 不支持复杂查询(无 SQL)
- 单文件建议不超过 1MB
- 并发写入需要串行化
ADR-002:自适应 H5 而非微信小程序
状态:已采纳
决策:使用 Next.js 构建自适应 H5 页面,不开发微信小程序。
理由:
- 开发效率高:一套代码适配 PC/手机/平板
- 无需审核:H5 页面无需微信审核流程
- 公众号直达:微信菜单直接跳转 H5
- 分享方便:链接可直接在微信/浏览器打开
- SEO 友好:搜索引擎可收录
局限:
- 无法使用微信原生能力(需要 JS-SDK 补充)
- 首次加载可能较慢(需要优化)
- 无法添加到手机桌面(需要 PWA 补充)
ADR-003:模仿 cnb.cool UI 风格
状态:已采纳
决策:UI 设计模仿 cnb.cool 的深色科技风格。
理由:
- 科技感与现代感符合信息平台定位
- 深色主题对眼睛友好
- 橙色强调色吸引注意力,适合信息浏览
- 与 CNB 平台品牌一致
配色:
- 主背景:#0A192F
- 强调色:#FF6B35
- 文字色:#E2E8F0
ADR-004:Next.js 16 + Tailwind CSS 4
状态:已采纳
理由:
- Next.js App Router 提供优秀的路由和 SSR/SSG 支持
- API Routes 可做中间层处理 CNB 写入
- Tailwind CSS 4 原子化 CSS,快速实现 cnb.cool 风格
- TypeScript 提供类型安全
- 生态丰富,组件库成熟
ADR-005:数据写入通过 NPC/CI 处理
状态:已采纳
决策:前端不直接 Git Push,写入通过 NPC 或 CI/CD 处理。
流程:
- 用户提交信息 → 前端调用 Next.js API Route
- API Route 将数据暂存(或创建 Issue)
- NPC 监听 Issue → 自动处理 → Git Push 到仓库
- 下次读取即可获取新数据
理由:
- Token 安全:不在前端暴露 Git Push 凭证
- 数据校验:NPC 可校验数据格式
- 审核:NPC 可加入审核逻辑
- 灵活:可在中间层添加任何处理逻辑
ADR-006:Issue 系统做互动
状态:已采纳
决策:使用 CNB Issue 系统实现帖子评论和举报功能。
映射关系:
| 功能 | CNB Issue |
|---|---|
| 帖子评论 | Issue Comment |
| 举报 | 创建 Issue(label: report) |
| 帖子反馈 | Issue Comment + emoji |
理由:
- CNB Issue 系统天然支持评论
- 无需额外开发评论系统
- 有完整的 API 支持