外观
natlan-web 文档
按读者要做的事分四层(Diátaxis)。先想清楚现在要做什么,再选层。
| 层 | 目录 | 回答的问题 | 形态 |
|---|---|---|---|
| 教程 | tutorials/ | 第一次接触,怎么从零跑起来? | 手把手、可照做 |
| 操作手册 | guides/ | 要完成某个具体任务,步骤是什么? | 任务导向、面向目标 |
| 参考 | reference/ | 这个接口、配置、字段、表到底是什么? | 查得到、求精确 |
| 内部原理 | internals/ | 系统为什么这样设计、怎么运转? | 解释、给出取舍 |
教程
| 文档 | 内容 |
|---|---|
| 从零把四个站跑起来 | 装依赖、起各站 dev、连后端、构建与检查 |
| 走一遍共享组件的改动闭环 | 改 ui/ → 文案 → 检查 → 四站波及面 |
操作手册
| 文档 | 什么时候用 |
|---|---|
| 部署三个 Cloudflare Worker 站 | 发布控制台 / 门户 / 首页 |
| 投放授权界面 | 发布授权页(手工流程,含 CSP 发布顺序与验收) |
| 排查 CSP 与人机验证故障 | 验证码超时、nonce 对不上、脚本被拦 |
| 让前端指向另一个控制面 | 本地联调、指向另一套部署 |
| 往共享库加组件 | 新增 ui/ 组件时的检查清单 |
| 升级 vendored 的 Cap 组件 | 跟进上游验证码组件 |
| 刷新首页的烘焙快照 | 首页地图/数字过期 |
| 重截控制台界面图 | 界面改版后更新配图 |
参考
四个站
| 文档 | 内容 |
|---|---|
控制台 apps/control | 路由、功能、界面、登录、部署 |
对等门户 apps/peering | 路由、身份链路、只读态势与脱敏口径 |
授权界面 apps/auth | 授权流、契约要点、两条例外 |
品牌首页 apps/home | Worker 路由、三层数据降级、fleet 岛 |
接口契约
| 文档 | 内容 |
|---|---|
| 控制台 ↔ 控制服务器 | 端点、字段口径、错误契约、轮询预算 |
| BGP 抖动检测 | 打分模型、榜单/告警分层、根因定位、处置动作 |
| 对等门户接口 | 身份、对等生命周期、观测、只读态势 |
| 授权界面接口 | 授权流四步、passkey、验证码票据 |
共享组件库 ui/
| 文档 | 内容 |
|---|---|
| 库总览 | 定位、目录约定、导入路径、横切模块、样式 |
| 组件库契约 | 宿主契约 + 五条设计准则(为什么组件长这样) |
| 基础件目录 | primitives / forms / layout / feedback / data 的逐组件 props |
| 图表层 | ChartCanvas 架构、9 个图表组件、4 个自绘插件 |
| 复合块 | 看板、抖动可视化、机群地图 |
横切
| 文档 | 内容 |
|---|---|
| 配置参考 | 域名、API 基址与前缀、环境变量、存储键 |
| 设计令牌 | 颜色/排版/形状全表 + 图表工艺参数 |
| 品牌与视觉设定 | 名字、标志、色彩铁律、首页艺术方向 |
| 内容安全策略 | 两站策略全文、每条指令的理由、故障形态 |
内部原理
| 文档 | 解释什么 |
|---|---|
| 单体仓架构 | 为什么合仓、为什么不用 workspaces、边界与波及面 |
| 交互契约 | URL 即状态、SWR 轮询、表格基线、确认分级、错误分层 |
| 国际化与主题 | 字典归库/语言归宿主、完整性检查、暗色的两条投递路径 |
| 人机验证:自建 Cap 产物 | 为什么自建、界面与解题器的分界、对 CSP 的要求 |
| 授权页为何独立托管 | OIDC issuer 的约束、跨源实测、迁移路上验证出的事实 |
按场景选读
要用某个共享组件 → 基础件目录 / 图表层 / 复合块 查它的 props
要改共享组件 → 走一遍改动闭环 → 组件库契约 → 加组件检查清单
要发布 → 部署 Worker 站; 若改动碰到 ui/ 或授权页 → 再走投放授权界面
线上出问题 → 验证码/CSP 相关看排查手册; 接口字段对不上看对应的接口契约
要对接后端 / 改接口 → 控制台接口(含错误 detail 是稳定接口这一条约定)→ 抖动接口
这份文档体系的边界
- 面向开发与运维。终端用户的操作指南在 https://docs.natlan.io/(源在后端仓)。
- 以当前状态为准。文档不记录阶段性中间态;被推翻的方案只在它留下了仍然成立的 结论时才保留(例如 授权页为何独立托管)。
- 代码是事实源。文档给的是口径、理由与取舍——那些读代码看不出来的部分。 两者冲突时以代码为准,并回来修文档。