The calorie tracker UX decision: log first, organize later

The calorie tracker UX decision: log first, organize later

When I started building a calorie tracker, the obvious approach was a food database. Search for an item, choose a serving size, pick a meal, save it to a daily log. I sketched that flow, then tried it with my own lunch from a small cafe. The bowl was not in the database. I got a dozen near matches, guessed a serving size, picked ‘lunch’, and spent more time operating the app than eating. That was the moment I changed the core interaction.

当我开始构建一个卡路里追踪器时,显而易见的方法是建立一个食物数据库。搜索项目、选择份量、挑选餐次,然后保存到每日日志中。我勾勒出了这个流程,然后用我在一家小咖啡馆吃的午餐进行了测试。那个碗里的食物不在数据库中。我得到了十几个近似匹配项,猜测了一个份量,选择了“午餐”,结果花在操作应用上的时间比吃饭的时间还多。那一刻,我改变了核心交互方式。

The decision was to make calorie logging a single quick-add field. You type what you ate and an approximate calorie number, then press enter. Macros are optional. Meal categories do not exist. The app does not ask you to search a database before you can record anything. If you want more detail, you can put it in the label: ‘chicken rice bowl 650’. The entry lands in today’s list and you move on.

我的决定是将卡路里记录简化为一个快速添加字段。你输入吃了什么和大约的卡路里数值,然后按回车键。宏量营养素是可选的。餐次分类不存在。该应用不会要求你在记录任何内容之前先搜索数据库。如果你想要更多细节,可以将其写在标签里,例如:“鸡肉饭碗 650”。条目会进入当天的列表,然后你就可以继续做别的事了。

This is less precise than a full food database, and that is intentional. Most people I know who track calories casually are not trying to produce an audit-grade ledger. They want a rough daily number that takes seconds to update. One friend logs ‘toast and coffee 320’ before she opens her email. That habit would not survive a five-step search flow.

这比完整的食物数据库精确度低,但这是故意的。我认识的大多数随意追踪卡路里的人,并不是为了制作一份审计级别的账本。他们想要的是一个只需几秒钟就能更新的每日粗略数字。我的一位朋友在打开电子邮件之前会记录“吐司和咖啡 320”。这种习惯在五步搜索流程中是无法维持的。

The tradeoff is that quick-add depends on your own estimate. If you have no idea what a portion contains, a database can help. We kept the app narrow instead: a free browser tool, no signup, and a fast entry path for people who already have a rough sense of their food. There is one gotcha worth knowing. Since there is no account, the log is stored in the browser’s localStorage. That keeps setup at zero, but clearing site data or switching browsers means the history is gone.

这种权衡在于,快速添加依赖于你自己的估算。如果你完全不知道一份食物包含多少热量,数据库会有所帮助。我们反而保持了应用的精简:一个免费的浏览器工具,无需注册,为那些对食物已有大致了解的人提供快速录入路径。有一点需要注意:由于没有账户,日志存储在浏览器的 localStorage 中。这使得设置成本为零,但清除站点数据或切换浏览器意味着历史记录会丢失。

I put a short note about that on the page instead of pretending local-only storage is the same as an account. I put the current version at calorietracker.theblissfulmind.store if you want to see the quick-add flow. The lesson for me was not that databases are bad. It was that the first screen should solve the smallest useful version of the job.

我在页面上对此做了简短说明,而不是假装仅限本地的存储与账户功能相同。如果你想查看这种快速添加流程,我已将当前版本放在 calorietracker.theblissfulmind.store。对我来说,教训并不是数据库不好,而是第一个屏幕应该解决该任务中最简单、最有用的部分。