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

3.8 KiB
Raw Blame History

简单写作(跨平台极简写作 PWA

一个极简风格的写作工具,原生跨平台:浏览器打开即用,可安装到 Windows 桌面与安卓主屏,支持离线,并带基于 WebDAV 的端到端加密多端同步

功能

  • 极简纸张风格写作界面
  • 打字机滚动:当前输入行始终保持在屏幕中央(点工具栏按钮开关,默认开启)
  • 专注模式(F11):隐藏一切只剩文字
  • 多篇文档管理(新建 / 切换 / 删除),按更新时间排序
  • 本地自动保存(localStorage),关掉浏览器也不丢
  • 实时字数统计 + 写作计时
  • 导出 TXT / Markdown / 复制全文
  • 深色 / 浅色主题
  • 多端同步(WebDAV):内容经你的密码端到端加密后上传(网盘只存密文,无法读取)

目录结构

src/            源代码(网页、样式、JS、图标、服务器)
android/        Android 构建工程
scripts/        构建/安装脚本

一键启动(推荐)

node src/start.js
# 浏览器访问 http://localhost:8080

该命令启动写作页面(8080),并内置 WebDAV 同步代理(同源 /api/webdav/)。 可用 PORT=9000 node src/start.js 改端口。

仅本地写作(无需同步)

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 Tunnelngrok 把本地端口暴露为 HTTPS 地址;
  • 或放到任何云服务器 + 反向代理(Nginx/Caddy+ 免费证书;
  • 务必用 HTTPS 的地址填到软件里,否则加密同步会被浏览器禁用。

安全说明

  • 文档内容在浏览器内用 PBKDF2 派生的 AES-GCM 密钥加密后才上传,WebDAV 网盘仅存储密文。
  • 加密密码只存在于你的浏览器内存,不上传给任何人;网盘服务商 / 运维方均无法读取你的文字。
  • 但加密密码一旦遗忘,内容将无法恢复,请务必牢记。
  • WebDAV 账密由你的网盘保管;代理以 HTTPS 经同源转发,请尽量在可信网络或 HTTPS 下使用。