Files
SimpleWriting/README.md
T
2026-07-10 17:09:39 +08:00

70 lines
3.8 KiB
Markdown
Raw 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.
# 简单写作(跨平台极简写作 PWA)
一个极简风格的写作工具,原生跨平台:浏览器打开即用,可安装到 Windows 桌面与安卓主屏,支持离线,并带**基于 WebDAV 的端到端加密多端同步**。
## 功能
- 极简纸张风格写作界面
- **打字机滚动**:当前输入行始终保持在屏幕中央(点工具栏按钮开关,默认开启)
- 专注模式(F11):隐藏一切只剩文字
- 多篇文档管理(新建 / 切换 / 删除),按更新时间排序
- 本地自动保存(localStorage),关掉浏览器也不丢
- 实时字数统计 + 写作计时
- 导出 TXT / Markdown / 复制全文
- 深色 / 浅色主题
- 多端同步(WebDAV):内容经你的密码端到端加密后上传(网盘只存密文,无法读取)
## 目录结构
```
src/ 源代码(网页、样式、JS、图标、服务器)
android/ Android 构建工程
scripts/ 构建/安装脚本
```
## 一键启动(推荐)
```bash
node src/start.js
# 浏览器访问 http://localhost:8080
```
该命令启动写作页面(8080),并内置 WebDAV 同步代理(同源 `/api/webdav/`)。
可用 `PORT=9000 node src/start.js` 改端口。
## 仅本地写作(无需同步)
```bash
python -m http.server 8000
# 浏览器访问 http://localhost:8000
```
## 多端同步(WebDAV
通过你自己的网盘(坚果云 / Nextcloud / 自建 WebDAV)做存储,内容端到端加密后上传,网盘只存密文、无法读取。
### 1. 启动服务
`node src/start.js` 启动(已内置 WebDAV 代理,无需再单独跑其它服务)。
### 2. 在写作软件里登录
点右上角 ☁ 按钮,填写 WebDAV 信息后点"登录并同步"
- **WebDAV 服务器地址**:如坚果云 `https://dav.jianguoyun.com/dav/`、Nextcloud `https://你的域名/remote.php/dav/files/用户名/`
- **存储路径**:文件名,默认 `jiandan-sync.json`(可带子目录,如 `notes/app.json`
- **WebDAV 用户名 / 密码**:登录该网盘的账号密码
- **加密密码**:内容端到端加密用的密码(与 WebDAV 密码可不同,请牢记)
- 刷新页面后会**自动恢复**并继续后台同步。
> 浏览器直连第三方 WebDAV 会被 CORS 拦截,因此 WebDAV 请求统一经本机 `src/start.js` 的 `/api/webdav/` 代理转发(代理只转发密文,不接触明文)。**所以使用 WebDAV 也必须通过 `node src/start.js` 启动**,不能直接用 `file://` 打开页面。
WebDAV 实时性:编辑后约 1.2 秒自动上传,并**每 8 秒轮询一次**远程变更(WebDAV 协议无推送能力,这是准实时方案)。
### 3. 多设备
Windows 与安卓上填**同一 WebDAV 账号与同一加密密码**即可双向同步(按"最后修改时间"合并,最后写入获胜)。
## 跨网络 / 公网部署(真正异地多端)
局域网内用电脑 IP 即可;若要在不同网络(如公司/家里)同步,需把服务部署到有公网 IP 的机器,并用 **HTTPS**(浏览器只在 `localhost` 或 HTTPS 下才允许使用加密 API):
- 最简单:用 [Cloudflare Tunnel](https://developers.cloudflare.com/cloudflared/) 或 `ngrok` 把本地端口暴露为 HTTPS 地址;
- 或放到任何云服务器 + 反向代理(Nginx/Caddy+ 免费证书;
- 务必用 HTTPS 的地址填到软件里,否则加密同步会被浏览器禁用。
## 安全说明
- 文档内容在浏览器内用 `PBKDF2` 派生的 `AES-GCM` 密钥加密后才上传,WebDAV 网盘仅存储密文。
- 加密密码只存在于你的浏览器内存,不上传给任何人;网盘服务商 / 运维方均无法读取你的文字。
- 但加密密码一旦遗忘,内容将无法恢复,请务必牢记。
- WebDAV 账密由你的网盘保管;代理以 HTTPS 经同源转发,请尽量在可信网络或 HTTPS 下使用。