9cb70d1746d3e2e236414dfb8e66d3f8f12252b8
简单写作(跨平台极简写作 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/、Nextcloudhttps://你的域名/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 或
ngrok把本地端口暴露为 HTTPS 地址; - 或放到任何云服务器 + 反向代理(Nginx/Caddy)+ 免费证书;
- 务必用 HTTPS 的地址填到软件里,否则加密同步会被浏览器禁用。
安全说明
- 文档内容在浏览器内用
PBKDF2派生的AES-GCM密钥加密后才上传,WebDAV 网盘仅存储密文。 - 加密密码只存在于你的浏览器内存,不上传给任何人;网盘服务商 / 运维方均无法读取你的文字。
- 但加密密码一旦遗忘,内容将无法恢复,请务必牢记。
- WebDAV 账密由你的网盘保管;代理以 HTTPS 经同源转发,请尽量在可信网络或 HTTPS 下使用。
Description
Languages
JavaScript
64.3%
CSS
16.7%
HTML
14.6%
PowerShell
2.2%
Java
1.3%
Other
0.9%