Vaultoz 是我一直在做的个人加密存储和跨设备传输工具。文件和元数据保存在自己的 S3 兼容存储里,加解密、分块传输和同步在设备上的 Go 核心中完成。
移动端使用 Flutter,桌面端使用 Electron、React 和 TypeScript。两边共享业务接口和数据规则,界面按设备分别设计:手机侧重触控、半屏编辑和原生文件入口,桌面保留列表、键盘、多选与拖放。
从文件存取到记录与附件
最初做的是上传、下载和目录操作。后来陆续补了媒体预览、搜索、断点恢复、离线缓存和系统分享接收。很多问题出在功能之间:切换配置后旧请求回来、重试重复创建内容、清理缓存丢了任务来源,都需要沿着整条数据链查。
发送页用于暂存自己的文字、图片、文件和语音。一条记录可以同时包含正文和多个附件,草稿、附件上传与正式提交各有明确的状态。保存到资料库时,已有附件使用不可变内容引用,不必解密后重新上传一份。
开发记录
- 重新捡起 Vaultoz:这次继续开发从哪里开始。
- Go、Flutter 和 Electron 的取舍:共享核心与两端界面的边界。
- 本地 SQLite 和加密同步:本机查询、任务与远端数据怎么配合。
- 换颜色没解决的 UI 问题:几轮设计返工后的判断。
- 手机公共控件与桌面组件体系:让页面和浮层遵循同一套交互规则。
- ARM 手机上的核心启动故障:从最终安装包查到原生签名不匹配。
- 正文和附件成为一条记录:草稿、传输与提交一起调整。
- 保存附件不再重传与共享内容的回收保护:内容身份和并发处理。
- 数据升级前确认:共享数据的版本检查与显式迁移。
- PDF 渲染器替换与多平台构建:原生接入和产物检查。
- 现在叫 Vaultoz 了:显示名称与数据格式的边界。