450KB。一个完整的时间+记账工具,比一张微信表情包还小。
这是DayTrak的全部体积。没有登录框,没有订阅弹窗,没有"您的数据已同步至云端"的安慰剂。开发者Steven Tey在GitHub上放出的这个项目,用了一种相当叛逆的架构——把整个后端塞进了用户的浏览器。
他给出的理由很直白:「我只是想记录工时和开销。私密地。不想再注册一个SaaS账号。」
为什么所有工具都想当你的数据房东
时间追踪软件的商业模式很统一:免费试用14天,然后每月9.99美元解锁"导出CSV"这类基础功能。更隐蔽的代价是数据主权——你的工时记录、收入明细、项目报价,全部托管在别人的服务器上。
Steven算过一笔账:自建后端需要至少3台服务器(应用服务器、数据库、备份),加上监控、SSL证书、GDPR合规审计。这些成本最终都会变成订阅费,或者更糟——变成免费用户的个人数据。
他的解法是把成本归零。DayTrak没有服务器。整个"后端"就是浏览器本身。
技术栈是这样的:Evolu框架在浏览器里通过WebAssembly运行SQLite,数据存在IndexedDB,查询用Kysely构建,同步靠CRDTs解决冲突。翻译成人话:你的电脑既是客户端,也是服务器。
本地优先架构的诚实与残酷
这种架构有个专门的名字叫"local-first"(本地优先)。它的隐私承诺是结构性的——即使开发者想偷看数据也做不到,因为没有服务器可以入侵。财务数据永远待在你的设备里,连加密传输的环节都省了。
离线能力是副产品。第一次加载后,飞机、地下室、信号盲区都不影响使用。作为PWA(渐进式网页应用),它可以像原生App一样安装到桌面。
但诚实是有代价的。如果你清空浏览器数据且没有备份,记录就永久消失。Steven在文档里写得很清楚:「这是诚实的权衡。」他提供的缓解方案是24词恢复短语,通过端到端加密在设备间同步,中继服务器只能看到加密blob。
monetary值的存储细节暴露了开发者的谨慎:全部以分为单位存成整数字符串,避开浮点误差;日期用本地时区而非UTC,因为凌晨0:30在你看来仍然是"今天"。
CRDTs:让分布式系统变得"魔法"的代价
多人协作场景下,冲突解决是硬骨头。Evolu用的CRDTs(无冲突复制数据类型)能自动合并不同设备的修改,但"软删除"(标记删除而非物理删除)让Steven适应了很久。数据库里会积累大量带删除标记的记录,这是正确性与简洁性的交易。
开发体验的简化幅度很夸张:没有认证系统、没有API端点、没有数据库迁移、没有服务器监控。写Vue组件直接读写本地数据库,「开发体验简单得惊人」。
零基础设施成本意味着永久免费。静态文件托管在CDN上,没有服务器要维护,没有备份要操心,没有扩容焦虑。
查询性能是本地数据库的固有优势。没有网络往返,SQLite的查询速度直接反映为界面响应速度。
这个项目的存在本身是个提问:当我们默认所有应用都需要云端后端时,有多少复杂度是为了商业模式而非用户需求发明的?Steven的答案是——对于个人工具,浏览器已经够用了。
你会愿意用一个可能因清空缓存而丢失数据的工具,来换取绝对的隐私和零订阅费吗?
热门跟贴