今天吃什么,每天问三遍,却没有正确答案。
干饭魔法书只做一件事——替你把这一顿定下来。
滚动屏幕,手机随你转动——好设计,经得起立体地看。
它不难,只是无穷无尽。我把这个日常决策拆成四层——前三层关于效率,最后一层关于关系。
吃什么每天要重复决定三次,没有正确答案,却要消耗真实的意志力。选择越多,越难定下来。
大多数菜谱产品停在“看”这一层:收藏了、看过了,但没有解决“我现在手里有什么、能不能做”。
年轻人对“这一顿够不够”缺乏判断依据,搜索得到的往往是广告或相互矛盾的说法。
两个人一起吃饭时,“随便”和“都行”是最难的题。决策成本翻倍,最后往往演变成“你点吧”。
用户缺的从来不是菜谱,而是替他把这一顿定下来的那一下。 真正被消耗的不是时间,而是做决定的意志力—— 所以产品的主线,是抽签式的决策仪式。
把“随便”,
变成“就它了”。
产品不追求菜谱数量,也不做社区。它只承诺一件事: 在你不想再想的时候,给你一张敢替你拍板的菜单—— 并且这张菜单,是真的做得出来的。
把开放问题收敛成 1 个答案。魔法盲盒直接用抽签的方式输出“一荤一素一主食”,把无限选择变成一次点击。
把菜谱变成能落地的清单。食材逐项勾选、替代建议、一周购物清单,解决“看完还是不知道怎么做”。
让这件事被看见。等级、成就、干饭日历,把“我今天给自己做了饭”记录成一件值得开心的小事。
把边界说清楚。孕期、慢性病等敏感场景主动提示“仅供日常参考,不能替代医生建议”,不让功能越界成医疗建议。
这台手机里跑的是按真实菜谱数据重建的可交互原型——搜索、抽盲盒、收藏、打卡,全部真的能用。
页面不是按功能堆的,是按用户的路径铺的——从“不想想”到“做完了”,每个域回答一个问题。
所有功能都从同一个问题出发:这一步,有没有帮用户更快定下来?
把“选择”改成“抽取”——结果固定一荤一素一主食,结构比数量更重要。
四段式作答:营养亮点 → 这样搭配 → 推荐做法 → 需要留意,并直接挂上可做的菜谱。
以食材倒推菜谱,按“食材利用 3/4”排序,先回答“手里有什么”。
人数、预算、时长三个约束,生成七天三餐;每一餐可单独替换,自动汇总购物清单。
经验只来自真实行为:收藏 +8、打卡 +25。每一餐,都算数。
反馈状态全程可见:未读 → 已读 → 已回复 → 已采纳;被采纳再奖励 60 经验。
下面每一个循环播放的动效,都对应小程序里真实存在的交互——不是装饰,是产品语言。
抽签不是弹窗开奖,而是一次翻卡片的仪式感——翻开的正是小程序里的真实菜谱,每一席都按今晚模式真实筛出。
打卡、收藏、收下整席都真的加经验——进度条涨上去的那一下,就是回下一次的理由。
自由提问,直接返回四段式建议——识别到敏感场景时,免责声明会主动出现在最前面。
连续做饭的天数用一格格亮起来的日子来呈现——不催促,不排名,只是替你记得。
随机之所以可信,是因为前面有真实约束——模式、口味、忌口层层收窄,抽出的每一席都有依据。
点一下收藏,红心跳起、经验入账——想做的菜自动进清单,每个行为都会被即刻奖励。
暖调纸张打底,玻璃拟态承载信息,强调色只留给真正需要被看见的地方——所有色值都来自小程序的真实样式表。
所有色值均取自小程序各页面样式表与 app.wxss,网页与产品保持同一套。
不用额外加载字体,全部走系统字体栈,中文在 iOS / Android 上都能保持同一种手感。层级靠字重与字号对比拉开,不靠颜色。
四种被反复复用的材质。玻璃拟态卡负责承载信息,纸张底负责让眼睛休息,深墨遮罩负责让图片上的文字始终可读。
白底 46%–78% + 1rpx 白色描边 + 内侧高光,叠在图片上时依然清晰。
页面主渐变,配合两处 radial 光晕(珊瑚 / 鼠尾草)制造呼吸感。
底部强、上部弱的线性遮罩,保证菜名在任何食物照片上都可读。
只用于“翻开”这类关键动作,是全站唯一的高饱和正向按钮。
16rpx 标签 / 24rpx 卡片 / 30rpx 主视觉 / 999rpx 胶囊。层级越靠外,圆角越大,形成包裹感。
页面只管展示,逻辑按域拆成服务,云端一个入口。任何一层挂掉,用户都不应该看到白屏。
// 所有云端能力收敛成一个 action 命名规范:域.动作 const cloudApiService = { drawMagicMenu: (payload) => call("magic.menuDraw", { ...payload }), askAdvisor: (question) => call("advisor.ask", { question }), matchFridge: (ingredients) => call("fridge.match", { ingredients }), awardExperience: (type, key) => call("experience.award", { type, key }) }; // 调用层自带降级:云函数 → HTTP 接口,失败也不让用户看到报错 async function call(action, payload) { try { const res = await wx.cloud.callFunction({ name: "mealApi", data: { action, payload } }); if (res.result?.ok) return res.result.data; throw new Error(res.result?.error?.message); } catch (e) { return callByHttp(action, payload); // 通道二 } }
每道菜谱携带 12 个可检索字段:分类、口味、难度、时长、份数、预算、厨具、适用模式、孕期友好、过敏原、替代建议、四段营养数据。所有推荐算法都建立在这套结构上,而不是散落在各页面的 if-else。
关键行为全部上报:菜谱浏览、搜索词长度与结果数、盲盒抽取、营养提问长度、是否触发免责声明。设计时就预设了“这个功能怎么衡量”。
云端配置站点名称、首页问候语、公告、维护模式与最低客户端版本。菜谱支持后台增删改,不需要重新发版就能调整内容。
从一句生活洞察,到一套能点、能跑的产品——
一个人,一套 AI 协作流程。
哪些做对了,哪些还不够,以及下一步往哪走。
把菜谱供给做到规模化
没有量级,再好的决策机制也跑不起来。
菜单分享卡
把今晚吃什么,变成一张可以转发给朋友的图。
接入大模型营养对话
规则引擎退居兜底,提升长尾问题的覆盖。
家庭协同
双人投票升级成多人菜单与分工,切入家庭场景。