70 lines
3.8 KiB
Markdown
70 lines
3.8 KiB
Markdown
# 简单写作(跨平台极简写作 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 下使用。
|