Skip to content

技术决策记录

ADR-001:CNB Git 作为后端数据库

状态:已采纳

决策:使用 CNB Git 仓库存储数据(JSON 文件),不使用传统数据库。

理由

  1. 零运维:无需服务器、无需数据库
  2. 免费使用:CNB 平台免费提供
  3. 版本管理:Git 内置版本控制和历史追溯
  4. OpenAPI:CNB 提供完整的 REST API
  5. 适合场景:信息发布类应用,低频写入、高频读取
  6. 与 cnb-as-backend 理念一致:CNB 就是后端

局限

  • 写入有延迟(需要 Git Push)
  • 不支持复杂查询(无 SQL)
  • 单文件建议不超过 1MB
  • 并发写入需要串行化

ADR-002:自适应 H5 而非微信小程序

状态:已采纳

决策:使用 Next.js 构建自适应 H5 页面,不开发微信小程序。

理由

  1. 开发效率高:一套代码适配 PC/手机/平板
  2. 无需审核:H5 页面无需微信审核流程
  3. 公众号直达:微信菜单直接跳转 H5
  4. 分享方便:链接可直接在微信/浏览器打开
  5. SEO 友好:搜索引擎可收录

局限

  • 无法使用微信原生能力(需要 JS-SDK 补充)
  • 首次加载可能较慢(需要优化)
  • 无法添加到手机桌面(需要 PWA 补充)

ADR-003:模仿 cnb.cool UI 风格

状态:已采纳

决策:UI 设计模仿 cnb.cool 的深色科技风格。

理由

  1. 科技感与现代感符合信息平台定位
  2. 深色主题对眼睛友好
  3. 橙色强调色吸引注意力,适合信息浏览
  4. 与 CNB 平台品牌一致

配色

  • 主背景:#0A192F
  • 强调色:#FF6B35
  • 文字色:#E2E8F0

ADR-004:Next.js 16 + Tailwind CSS 4

状态:已采纳

理由

  1. Next.js App Router 提供优秀的路由和 SSR/SSG 支持
  2. API Routes 可做中间层处理 CNB 写入
  3. Tailwind CSS 4 原子化 CSS,快速实现 cnb.cool 风格
  4. TypeScript 提供类型安全
  5. 生态丰富,组件库成熟

ADR-005:数据写入通过 NPC/CI 处理

状态:已采纳

决策:前端不直接 Git Push,写入通过 NPC 或 CI/CD 处理。

流程

  1. 用户提交信息 → 前端调用 Next.js API Route
  2. API Route 将数据暂存(或创建 Issue)
  3. NPC 监听 Issue → 自动处理 → Git Push 到仓库
  4. 下次读取即可获取新数据

理由

  1. Token 安全:不在前端暴露 Git Push 凭证
  2. 数据校验:NPC 可校验数据格式
  3. 审核:NPC 可加入审核逻辑
  4. 灵活:可在中间层添加任何处理逻辑

ADR-006:Issue 系统做互动

状态:已采纳

决策:使用 CNB Issue 系统实现帖子评论和举报功能。

映射关系

功能CNB Issue
帖子评论Issue Comment
举报创建 Issue(label: report)
帖子反馈Issue Comment + emoji

理由

  1. CNB Issue 系统天然支持评论
  2. 无需额外开发评论系统
  3. 有完整的 API 支持

由云锦鸿维护