一句话:只存让提醒能正常工作所必需的东西,不做行为追踪、不接广告、不卖给任何人;
你随时可以把数据导出,或者一键删干净。
1我们存什么
- 账号:同步口令的哈希值(服务端只存哈希,不存明文),以及一个内部用户 ID。
- 日程内容:事项标题、分类(工作/生活)、类型、截止日期、备注、勾选记录。
- 提醒投递:到点提醒的触发时间与送达状态(发送成功 / 已读 / 已完成)。
- 推送订阅:浏览器生成的推送地址与公钥(用于把通知投到你这台设备)。
- 设备信息:设备名(如「iPhone 浏览器」)、浏览器标识、最后活跃时间——用于在设备列表里给你看、并支持踢掉某台设备。
2我们绝不存什么
- 不读取通讯录、相册、定位、剪贴板。
- 不做用户画像,不接入第三方统计(如 Google Analytics)、不接入广告 SDK。
- 不保存你的口令明文——服务端只有加盐迭代后的哈希值,谁也读不出原口令。
- 不把数据用于训练模型,也不与任何第三方共享或出售。
3我们怎么保护它
- 全站 HTTPS 传输;数据库文件不对外暴露,只通过服务端接口访问。
- 登录用同步口令:服务端只存哈希;连续输错 8 次自动锁定 10 分钟,防止被暴力猜解。
- 登录凭证分离:短期访问令牌(30 分钟,只放在页面内存里,脚本读不到长期凭证)+ 刷新令牌(
HttpOnly Cookie,勾了「记住我」为 90 天)。
- 数据按账号物理隔离:每条数据库查询都强制带
userId 条件,任何接口都拿不到别人的数据。
- 修改是「带时间戳的逐条变更」,多设备同步用确定性仲裁规则收敛,不会互相覆盖出脏数据。
4你的控制权
- 导出:登录后访问
/v1/me/export(浏览器直接打开即可下载 JSON),拿到全部事项与勾选记录。
- 踢设备:账号菜单 → 设备列表 → 移除某台设备,那台设备会立刻掉线。
- 关邮件兜底:账号菜单或偏好接口可关闭邮件提醒,只保留浏览器通知。
- 注销账号:删除后账号立即失效、数据从主表删除,所有设备同时退出登录。
5删除到底删了什么
删除一条日程会写入一条「墓碑」记录:这样你另一台设备上还没同步的那份副本,不会在你下次打开时把它变回来。
墓碑会在 90 天后随定时清理任务物理删除;注销账号则是立即清空你的全部数据。
唯一保留期较长的是服务器访问日志(用于排查故障与防滥用),默认保留不超过 30 天。
6提醒是怎么送到的
提醒时间由服务器按你的日程推导并保存,因此关掉网页、退出浏览器也会照常触发:
先投递浏览器/系统通知;如果你这台设备没有可用的通知订阅(例如 iPhone 上还没「添加到主屏幕」),
就自动改发一封邮件兜底。默认 22:00–08:00 不打扰,到次日早上再补发。