自托管的实时协同电子手账,全栈 Web 应用。后端 Node.js + Express + Socket.io,前端单页应用(Canvas 2D,无第三方 UI 库),数据存于本地 JSON 文件,无需数据库、零成本运行。
- 重视数据归属的手账、日记、随记用户:所有内容均保存在本机,不经过任何第三方服务器;删除
data/目录即可彻底清空数据,整个文件夹亦可随时备份迁移。 - 小团队、亲友共同创作的用户:多人可同时在一本手账中涂鸦、贴图与书写,彼此可见光标与笔迹,适用于拼贴共创、计划安排、头脑风暴与共享笔记。
- 无需注册、无需上云、无需订阅的用户:不依赖账号体系、云盘或会员服务,开箱即用。
- 内网、离线或弱网环境:可部署于公司内网、学校机房、树莓派或旧电脑;本机或局域网使用时不受外网影响,适用于数据不便外传的场景。
- 偏好极简、可控工具的用户:核心代码仅包含
server.js与index.html两个文件,结构清晰,便于自行修改与理解。
- 数据完全属于你:全部数据就是
./data/下的本地 JSON 文件,无数据库、无云同步、无第三方留存,可备份、可迁移、可审计。 - 零成本、零依赖、低门槛部署:后端仅依赖
express与socket.io,无需数据库与账号系统;复制项目目录后执行node server.js即可运行,单个目录即构成完整服务。 - 元素级实时协同:每个图片、笔迹、文字都是独立可编辑对象,多人同时操作互不阻塞(元素级乐观锁);操作实时广播、光标跨页可见,每个元素还自带创建人与创建时间。
- 针对手账场景优化的细节:A4 多页画布、图片 / 笔迹 / 图形 / 文字混排、自定义字体库(导入后全局可用)、阴影与描边效果、透明底 PNG 与 A4 分页 PDF 导出、房间聊天与可编辑 / 只读权限。
- 轻量高效:单文件前端、无框架无构建;页面按需加载,所有元素统一支持移动 / 缩放 / 旋转;浏览器端另有 IndexedDB 缓存,刷新页面不会丢失编辑内容。
- 多账本(房间)管理:新建 / 重命名 / 删除,访问密码,可编辑 / 只读权限
- 实时协同:多人同时编辑,画布操作实时同步,在线成员与光标跟随,元素乐观锁
- 多页手账:增删 / 重命名 / 切换页面,每页独立的图片层与标注层
- 绘图工具:画笔、橡皮擦(仅擦标注)、直线 / 矩形 / 圆形 / 箭头、文字、图片上传与剪贴板粘贴
- 元素效果:阴影 / 描边(强度可调,图片 / 文字 / 笔迹 / 图形通用,支持多选批量应用)
- 元素信息:选中 / 右键查看每个元素的创建人与创建时间
- 缩放:桌面端滚轮缩放,移动端双指缩放 / 平移
- 导出:高清 PNG(透明 / 白底)、PDF(A4 分页,全部页面)
- 容灾:每次操作立即写入
./data/JSON 文件,浏览器端另有 IndexedDB 缓存
npm install express socket.io
node server.js浏览器打开 http://localhost:3000。Windows 下可直接双击 start.bat(显示控制台窗口,关闭即停止服务;也可使用 stop.bat 停止)。
对外分享:ngrok http 3000 或使用 frp 转发 3000 端口。
所有手账数据保存在 ./data/ 目录下的 JSON 文件中,删除该目录即清空全部数据。
MIT License,详见 LICENSE。



