Android · Kotlin Compose · 本地优先

拍一张照,
这一餐就记完了。

不用选食物、不用填克数、不用算卡路里。按下快门那一刻记录就结束了。
看得清的那部分是数据,看不清的那部分,是留给自己的。

1 步完成一条记录
3 层谁能看到这餐
1717条食物成分
9 张真实饭照
饭记的今天页:早餐、午餐、晚餐都已记录,每一行带热量区间和心情色点

大多数饮食 App,
都死在“记之前要填太多”。

记一顿饭要选食物、挑份量、找单位,三分钟就没了。坚持不到一周,这个 App 就从手机里消失。 饭记赌的是另一件事:把记录的成本压到接近零,剩下的交给时间。

01 / 记录

快门就是提交键

按下去,这一餐就记完了 —— 自动落到早/午/晚/夜宵,中午吃三次也各记各的,聚合在一行里。 相册补录也一样,不用二次编辑。

02 / 社交

看得见,但看不全

每餐三档:私房、朦胧、一起。选朦胧时对方只看得到时间、马赛克图和心情, 拿不到原图。评论也分三种:锐评、鼓励、监督。

03 / 教练

模型只管看,不算数

视觉模型只负责把照片拆成菜、估个重量;热量和营养由《中国食物成分表》算出来。 数字不交给模型编。

拍完就在后台认,不用点进详情页。点进去时结论一般已经在那儿了; 还没算完就写「正在识别」,不让你以为卡住了。

屏幕右下角还挂着一个小助手:问「一碗花甲米线多少卡」,它同样查表算区间; 问「我今天还差多少」,它直接读你的记录回答,不绕模型。

它长这样

下面全部是真机截图,不是设计稿。想自己点的话,进 可点导览。

登录页:ID 加密码,下面列着这台手机上切过的账号
登录多账号随时切过去
空白的今天页,四餐都还是加号,右下角挂着助手球
今天 · 空一天还没开张
今天页三餐已记录,每行带热量区间、心情色点,晚餐聚了两次
今天 · 有记录一行一餐,色点是心情
拍照界面,取景框对着饭菜
拍照进来就是取景框
一餐的详情页:大图,加教练拆出来的 960–1612 kcal 和三条超标的线
详情一餐拆成 960–1612 kcal
详情页下半:心情、份量、场景、谁能看,都是点一下就存的胶囊
点一下就存心情 / 份量 / 谁能看
好友这一餐下面的评论:锐评、鼓励、监督三档,加一句支持的话
评论锐评 / 鼓励 / 监督
好友页:谁在看着你吃饭,按 ID 加人
好友按 ID 加人,条条看得见
一餐多顿的聚合
一餐多顿中午吃三次也不打架
我的页面:账号、每日目标、教练档案、示例数据
我的教练档案、示例数据、多账号

记录之外,它还记着账。

下面这几屏不是「更多功能」,是同一条链路的后半段:你拍进去的那些照片,被算成数字、汇成一周、再反过来告诉你明天该吃什么。

饭记小助手读完今天的记录后回答:只记了午餐一顿 506–756 kcal,离 2170 还差一大截
01 / 小助手

右下角那颗球,读着你的记录说话

问「今天吃的怎么样」,它先数你今天记了几顿、合起来多少 kcal,再说离你的目标还差多少 —— 答案里的每个数字都是从记录里查出来的,不是背一句模板。问「一碗花甲米线多少卡」,它同样去查成分表,给区间,不给假精确。

教练档案:每日目标 2170 kcal,蛋白 91g、脂肪 65g、碳水 305g,下面写着基础代谢和日常消耗
02 / 教练档案

2170 kcal 怎么来的,写得出来

身高、体重、年龄、活动量进去,基础代谢和日常消耗出来,再按维持 / 减脂 / 增肌分到全天和每一餐。 它只追问它还缺的那几项,不会让你把一整张表填完才肯开工。

总结页:达标率 10%、日均 2070 kcal、7 天里记了 4 天,加一段教练复盘和日历
03 / 总结

一周结束,它先说哪儿没做到

达标率、日均热量、记录天数,末尾跟一句「明天就做这一件」。「7 天里记了 4 天」也被算进去 —— 记录习惯本身就是数据,不是拿来扣分的。

饮食推荐:每道菜标了几克、多少 kcal、比目标差多少 常见食材表:鸡胸、鸡蛋、北豆腐每 100 克的热量和蛋白
04 / 推荐

推荐是按表缩放的,不是拍脑袋

每道推荐都标了克数、多少 kcal、比你这一餐的目标差多少;往下翻就是它算账用的那张表 —— 常见食材每 100 克的热量和蛋白都列在上面。同一个数,两边对得上。

三块东西,一条链路

App 只认两个地址(Supabase 与教练服务),换域名各改一处;密钥不进 APK。

Client

Android App

Kotlin 2.1 · Jetpack Compose · Room 唯一数据源 · CameraX · Coil。
图片进本地库,UI 只读 Room。

Backend

身份 / 好友 / 同步

Supabase:Auth + Postgres + Storage。行级权限(RLS)写在库里,谁能看原图、谁只配看马赛克,由策略定。

Agent

营养教练 · 小助手

Render 上的独立 Node 服务:DeepSeek 拆菜估重,数字交给 food_composition_full.csv(中国食物成分表第 6 版);小助手的问答(/api/chat)也走它。

装到手机上,才是完整的一次。

网页里能看能点,但拍照、相册、通知这些只有真机给得了。