一款主打 纯本地、极致隐私、即用即走 的个人社交关系与人情往来管理工具。 帮你记住身边的亲戚朋友、理清人情账目、留住共同回忆。
- 技术选型:Flutter + 本地 SQLite(核心业务完全离线可用)
- 首发平台:Android(后续兼容 iOS)
- 数据原则:所有数据持久化在本地,不上云、0 服务器成本
家族与圈子共用同一套底层数据,只是展示方式不同:
person:统一的人物表(亲戚 / 朋友 / 同事都是 person)。group字段决定在「家族」里以树状呈现、还是在「圈子」里以平面 + 标签呈现- 家族结构关系(父/母/配偶)内嵌为 person 上的 ID 字段(血缘是固定基数,无需独立关系表)
- 圈子关系不建人与人的边,只用
tags聚类 ⚠️ 设计前瞻(避免未来 migration):血亲/婚姻 v1 用内嵌 ID 即可;但非血缘关系(干亲/义亲、师徒、同学同事等社会关系)与重组家庭(继/养父母)将来要靠一张 typedrelationship边表(from_id/to_id/type/ 备注)。落地 SQLite 时就把这张边表建好(v1 可只承载少量类型,甚至与内嵌 ID 并存),这样以后加"干爹"等新类型只是插入新行(additive),不必在用户设备上做破坏性 schema 迁移。非血缘关系在详情页以列表呈现,不进家族树(树只画血亲+婚姻,保持布局干净)
event:回忆 / 人情往来记录,可绑定多个 person
好处:朋友的「家属」和家族成员可互通,回忆能跨 Tab 绑定人,差额清算统一处理。
排期原则:先验证「用户愿不愿意持续录入和回看」,再接广告。 录入门槛 + 提醒缺失是 MVP 最大的体验风险,P0 优先解决。
- 统一数据层:
person/relationship/event三张表 + DAO - 引导式录入:以"我"为根节点,「加父亲 / 加孩子 / 加配偶」自动反推对方关系
- 配偶关系双向自动设置
- 删除成员时的引用处理策略(级联删 vs 置空,需明确定义)
- 家族 Tab:树状级联视图(缩放 / 折叠 / 点击进详情)
- 圈子 Tab:平面列表 + 多标签聚合(一人可打多个标签)
- 朋友卡片的扁平「家属随行」字段
- 借鉴通讯录的补充字段:公司 / 职位、读音(拼音)、纪念日
- 成员详情页:基础字段(真实姓名 / 小名 / 性别 / 生日 / 自定义称呼 / Markdown 备注)
- 回忆 Tab(人情时光机):
- 三类事件:💰 物质往来 / 🚗 共同经历 / 🎯 重要里程碑
- 一条记录可同时绑定多个 person,并自动分发到各自的时光轴
- 差额自动清算面板("净人情往来:逆差 X 元")
- 本地提醒/通知:生日、纪念日、里程碑提醒(留存命脉,纯本地实现)
- 搜索:按姓名 / 小名 / 标签 / 拼音 检索
- App 锁:指纹 / PIN(与"极致隐私"定位强绑定)
- 照片:选图后复制副本到 App 私有目录(避免相册清理/换机断链)
- 存储前压缩(控制体积)
- 称呼反向解析(半自动):详情页提示"你该叫 TA / TA 该叫你"
- 先覆盖三代以内常见关系,允许用户手动覆盖纠正(中文称谓极复杂,纯算法易错)
- 称谓库地区/学制以内地为基准(首发目标用户)
- typed 关系边表 / 非血缘关系(含干亲义亲、师徒、社会关系 + 重组家庭;较重,暂缓):
- 当前"一父一母一配偶"的内嵌槽表达不了"生父+继父"并存,也表达不了干爹 / 师傅等非血缘关系
- 方案:统一用
relationship(from_id, to_id, type, note)边表承载;血亲婚姻可继续内嵌或并入边表,称呼计算相应扩展 - 边表在 SQLite 首版就预留(见「数据模型 · 设计前瞻」),先做血缘、后加干亲都只插行不迁移
- UI:血亲婚姻保留快捷按钮 + 进树;"其他关系"走详情页通用入口(选类型→选/建人)+ 列表呈现,不进树
- 通讯录互通(vCard):与系统通讯录 /
.vcf文件双向打通- 导入种子(降录入门槛):从系统通讯录或
.vcf导入姓名/电话/生日/公司/标签/备注 - 导出回填:选择性把成员的名片字段导出为
.vcf,可写回手机通讯录(勾选人/字段,避免污染通讯录) - 全程一次性本地操作,不做持续同步、不上传(契合"极致隐私")
- 仅覆盖名片类字段;人情账 / 回忆时光轴 / 家族树走 JSON 全量备份,不进 vCard
- 为回填可用,
person增加可选phone/email(单值从简,不做标签多值) - 电话非唯一键:多人可共用同一号码,导入时不按号码去重(主键始终是
id) - 导入按有损处理(地址/多电话/网址等未建模字段丢弃,不做原始 vCard 透传)
- 实现:
flutter_contacts读写联系人 +.vcf解析/生成;处理 Android 通讯录权限
- 导入种子(降录入门槛):从系统通讯录或
- 生日部分精度:支持只填「年」或「年+月」(长辈常只知大概)。年→算年龄、不进生日提醒;完整→才进提醒。公历优先
- 农历生日(单列,较重):农历↔公历转换,长辈生日常用农历;与部分精度独立设计
- 自动本地备份:定期生成全量 JSON 备份 + 到期提醒
- 备份导入/恢复:换机迁移(含照片副本一并打包)
- 时光轴富文本 / 多图浏览体验优化
- AdMob 变现方案(待重新评估,先克制,避免伤调性 / 过审风险)
- 倾向:自愿打赏去广告 + 激励视频解锁高级功能为主,慎用开屏/信息流
- AdMob Mediation 接入 Pangle(内地流量补充)
- 数据导出:CSV / Excel(家族 / 圈子 / 回忆三表),HTML 家谱报告
- 上架合规:
- 隐私政策 + Play Console Data Safety 表
- 应用年龄分级定为成人向(避免被归类为儿童应用)
- 广告 SDK 同意弹窗(UMP)
- Android 媒体权限适配(13+
READ_MEDIA_IMAGES) - iOS 端兼容