Files
WebDAV/PROJECT_MEMORY.md

54 lines
2.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# davbox · 项目记忆
## 一句话
极简 WebDAV 服务:admin 管账号、client 管文件、App 用来同步。**一个应用一个账号一个目录,互不可见。**
## 立项原因(2026-09-28)
用户需要一个像坚果云"创建应用"那样简单的 WebDAV,主要给 App 用。
调研过的市面方案与实测结论:
| 方案 | 实测结论 |
|---|---|
| SFTPGo(12,588★) | 功能对 ✓ 隔离实测通过 ✓ 但十几概念 + 管理端全英文 ✗ "功能复杂度"远超需求 |
| dufs(10,802★,3.02 MiB) | 隔离实测通过 ✓(越权 403/403、`../` 400)但只有启动参数、无 admin ✗ |
| hacdias/webdav(5,882★,7.09 MiB) | **两种配置写法隔离都没锁住** ✗(可见兄弟目录 / 暴露容器根)|
| rclone / copyparty / OpenList / Alist / Cloudreve | 均无"每账号独立根 + 管理页"这套 ✓ 或过重 ✗ |
| filebrowser(35,936★) | **根本没有 WebDAV** ✗ |
| 结论 | 缺口只有薄薄一层 → 自研产品层,协议用官方库 ✓ |
## 位置与环境
- 代码:本仓库
- 端口规划:开发/测试 `127.0.0.1:18900`
- 数据目录:`./data`(账号 JSON + 各应用目录 + 审计 JSONL)
- 编译:Go 1.24+ ✓
- 前端构建:Node v26 ✓
## 技术选型
见 `docs/DECISIONS.md`(含全部被否方案与当时的实测证据)。
要点:Go + `golang.org/x/net/webdav`(官方,7543 行实现 / 4275 行测试)+ React/Vite/TS 内嵌 + JSON 账号 + 单静态二进制。
## 部署
- systemd unit 常驻 ✓(已上线)
- nginx 反代 + TLS ✓(certbot 签发证书)
- 认证:**自带账号体系(默认)** ✓;管理端可关闭自带口令(`AUTH_MODE=sso`),协议端点永远保留自带账号 ✓
## 协作约定
- 需求文档在 `docs/REQUIREMENTS.md`,验收标准在 `docs/SPEC.md` ✓
- 需求文档写明改动范围与边界(不动生产进程与端口)✓
- 不硬编码任何域名与 IP ✓(一律环境变量或配置注入)
- 文案:中文、唯美克制、禁 emoji / 鸡汤 / AI 腔 ✓
## 进度
- [x] 技术选型 + 命名 + 建项目(2026-09-28)
- [x] 阶段一:底盘(账号隔离 + 六动词 WebDAV)
- [x] 阶段二:admin 页 + client 页
- [x] 部署:systemd + nginx + TLS
- [ ] 阶段三(可选):配额 / 用量 / 分享链接