这个项目能做什么
Nomi 是一款原生 Android 营养日记应用,使用 Kotlin、Jetpack Compose 和 Material 3 Expressive 编写。它面向 Android 8.0(API 26)及以上版本,并通过 GitHub releases 以 APK 资源形式分发。
记录是这款应用的核心。餐食可以以纯语言文本输入、在设备上口述,或从菜品和营养标签的照片中捕获。照片识别会利用可见的比例线索(如盘子大小和餐具)估算食物重量,在运行营养研究之前,克数可以查看和编辑。可以扫描完整的餐厅菜单,搜索提取出的菜品,并一次选择多个项目。明确的数量会被保留,营养信息会以确定性方式缩放,因此之后可以用“我少吃了 60 克”这样的说法更正已记录的数量,而无需重复在线研究。
营养数据来自可配置的 AI 提供商,而不是捆绑服务。README 推荐 Exa 加 Gemini,其中 Exa 检索网络证据,Gemini 将其转换为结构化营养数据,同时还列出了 Sonar、Perplexity、OpenRouter、OpenAI 以及兼容的自定义端点。用户在设置中提供自己的 API 密钥,并可在记录前进行连接测试。只有所选操作所需的文本或图像会发送给提供商。
复用功能包括最近食物、收藏、已保存餐食,以及复制过去某一天——可以整日复制,也可以按单独选择的食物复制。追踪涵盖卡路里、宏量营养素、微量营养素、体重、目标、记录连续天数和进度。界面已完整翻译为十种语言(英语、德语、西班牙语、法语、意大利语、荷兰语、葡萄牙语、阿尔巴尼亚语、瑞典语、土耳其语),首次启动时跟随系统语言,并支持公制和 US customary 数量;食物名称保留其原始语言,而不进行翻译。
隐私在本地处理:营养历史、已保存餐食、收藏、目标和体重记录都存储在设备上,API 凭据使用 Android Keystore 支持的加密,并被排除在导出和备份之外。导出内容包括每天食物的 JSON 日记以及卡路里、蛋白质和碳水化合物总计,还包括一个不含 API 密钥的可恢复备份。还可以通过将两部支持 NFC 的手机贴在一起来把某一天分享给另一台 Nomi,无需配对、账户、服务器或互联网连接;接收方手机在写入任何内容之前会先预览该日内容。
设计细节包括浅色、深色、动态颜色和纯黑表面,空间化卡片,响应式动效,边到边布局,以及手机/平板导航模式。从源码构建需要 JDK 17 和 Android SDK 37,并提供用于调试 APK 和单元测试的 Gradle 任务;可选的营养评估工具位于 `eval/`,使用 Git 忽略的 `.env` 文件中的凭据。发布遵循语义化版本控制,已发布的标签不可变。
该项目在 PolyForm Noncommercial License 1.0.0 下发布,允许个人、爱好、学习、研究、学校、慈善和公共机构使用,但禁止出售该应用或将其用于商业用途。不授予商标权,因此分支需要自己的名称和图标。README 指出,这是一种源码可获取许可证,而不是 OSI 批准的开源许可证。
评论
0 人表达喜爱 · 满10人后显示 Deer Point
登录后参与讨论。