本文件回答:Haven 是什么、面向什么场景、由哪几部分组成、主页承担什么职责。 依赖:无
Haven 是一套自托管的个人综合知识中台:以 PostgreSQL 为唯一真值源,Go 后端 + Vue 前端,Web 浏览器为一等主入口,TUI 与 Neovim 插件为次级客户端,服务于个人在多环境下的写作与查阅。
使用者在三类环境之间切换,对鉴权和访问方式的要求不同:
核心矛盾是:同一套数据,要在可信与不可信环境之间安全地读写。Haven 的鉴权模型围绕这个矛盾设计。
| 部分 | 角色 | 说明 |
|---|---|---|
| Web 前端 | 一等主入口 | 登录、写作、公开浏览、作品集、设置 |
| Go 后端 | 唯一 API 出口 | 所有客户端经由它读写 PostgreSQL |
| PostgreSQL | 唯一真值源 | 不引入其他存储作为真值源 |
| TUI 客户端 | 次级客户端 | 只覆盖读写笔记 + 检索主路径 |
| Neovim 插件 | 次级客户端 | 同上,走 API Token 鉴权 |
三类客户端的分工原则:Web 是功能全集,TUI 与 Neovim 只覆盖主路径,不做功能对等。
private(默认)/ public;细节见 docs/backend/auth.md 与 docs/backend/data-model.md。
主页同时承担三件事,按登录态区分渲染:
本项目的硬性禁令(不做什么)集中在 docs/conventions.md 第四节,本文件不重复列举。