1 分•作者: danestves•3 个月前
嗨,HN,
我是独立创始人。Vela 是一款我过去 8 个月开发的经期和周期追踪应用。它今天在 App Store 上线了;安卓版正在 Play Store 审核中。
我开发这款应用是因为每个主流经期追踪应用都存在三个问题的组合:它们向第三方出售数据,它们对同步数据使用弱加密(或根本没有加密),并且它们的设计基于一些我不愿意为我的伴侣在罗伊诉韦德案之后做出的假设。
设计目标,按优先级排序:
1. 服务器无法读取健康数据,即使被强制要求。
2. 应用完全离线运行。同步是副作用,而不是主要路径。
3. 核心功能永久免费;高级功能仅解锁同步 + 伴侣模式 + 扩展分析。
架构:
* 本地优先存储:通过 expo-sqlite 使用 SQLite 和 Drizzle ORM。通过 useLiveQuery 实现响应式查询。所有写入首先进入 SQLite;UI 从不等待网络。
* 零知识同步:Convex 作为后端,但它只看到加密的 blob。AES-256-GCM 用于数据,密钥在设备上从密码 + 设备密钥派生。
* 伴侣模式(在 v1.1 中发布):设备之间的 X25519 密钥交换。服务器中继密文。伴侣只看到用户明确分享的内容。
* 身份验证:更好的身份验证处理身份。健康数据按内部用户 ID 索引,从不按电子邮件或任何 PII 索引。
* 预测:Ogino-Knaus 基线 + 周期历史的加权移动平均 + z-score 异常检测。没有机器学习,没有数据离开设备进行预测。
* 技术栈:Expo (React Native), Expo Router, Turborepo monorepo, Uniwind (Tailwind for RN), HeroUI Native, Skia 用于游戏化视觉效果。
为了发布而从 v1 中删除的内容:
* 伴侣模式(正在运行,但需要更多测试)
* 云同步(相同原因)
* 安卓版(Play Store 审核正在进行中)
* 加密层的完全开源(希望先进行审计)
我真正希望得到反馈的内容:
* 威胁模型中的漏洞。我已经记录了我的假设,但我知道第二双眼睛总能发现一些东西。
* “零知识”的故事对非技术用户来说是否易于理解——我一直难以解释它,要么简化它,要么让人们不知所措。
* 如果你构建了本地优先的应用:你如何处理多设备同步的冲突解决?我正在使用单调计数器 + 字段级别的最后写入胜出,并且它有效,但我很好奇其他人采用了什么方法。
很乐意深入探讨以上任何内容。