奶茶健康榜单 App — React Native (Expo) 移动端 MVP
| 项目代号 | TeaRank / 茶知道 |
|---|---|
| 文档版本 | v1.0 |
| 创建日期 | 2026 年 7 月 11 日 |
| 目标平台 | iOS + Android(React Native / Expo) |
| MVP 周期 | 3-4 周 |
| 关联文档 | CTO_Review.html / milk_tea_brand_nutrition_report.html |
一句话定位:帮助消费者在买奶茶前,3 秒内看懂一杯奶茶的健康真相。
核心理念:不是营养数据库,而是健康决策引擎——把专业营养数据翻译成普通人能理解的购买建议。
| 维度 | 原 Web 方案 | Native App 方案 | 选择理由 |
|---|---|---|---|
| 使用场景 | 搜索引擎 → 浏览器 | 排队/点单时打开 App | 奶茶消费 90% 发生在手机上,App 更符合场景 |
| 体验质感 | 网页级 | 原生动画、手势交互 | 榜单滑动、卡片展开等交互 App 体验更好 |
| 离线能力 | 需网络 | 本地缓存,无网可用 | 排队时信号差,离线查看是刚需 |
| 推送触达 | 无 | Push Notification | 新品风险提醒、榜单更新推送 |
| SEO 获客 | 天然优势 | 无 | 需通过社交分享 + 应用商店 ASO 弥补 |
| 用户画像 | 特征 | 核心需求 | 使用频率 |
|---|---|---|---|
| 健康意识型 | 18-35 岁,关注体重/健身,每周喝 1-3 杯奶茶 | 想喝但怕胖,需要"最不罪恶"的选择 | 每次点单前查一下 |
| 成分敏感型 | 对植脂末/反式脂肪酸/咖啡因敏感的消费者 | 避开特定成分(孕妇避咖啡因、乳糖不耐受等) | 尝试新品牌/新品时查询 |
| 社交分享型 | 喜欢在社交媒体分享生活方式 | 生成好看的健康对比卡片用于分享 | 周末/约会时 |
MVP 原则(源自 CTO 评审):先把"能用"做到极致,而非追求功能全面。MVP 只做 3 件事——看榜单、查单品、懂含义。
| 优先级 | 功能模块 | 描述 | MVP? | 预估工时 |
|---|---|---|---|---|
| P0 | 首页 / 榜单 | 展示多维健康榜单(低卡榜、低糖榜、无植脂末榜、咖啡因榜),支持切换榜单类型 | V1 必做 | 3 天 |
| P0 | 单品详情页 | 展示单品健康评分、营养雷达图、风险标签、成分解读 | V1 必做 | 3 天 |
| P0 | 品牌列表页 | 按品牌浏览所有已收录饮品,展示品牌数据透明度评级 | V1 必做 | 2 天 |
| P1 | 搜索功能 | 按饮品名称、品牌搜索,支持拼音/模糊匹配 | V1 必做 | 2 天 |
| P1 | 健康小贴士 | 精简版知识卡片(植脂末是什么、咖啡因安全量等),替代 Web 版长文知识库 | V1 必做 | 1 天 |
| P2 | 饮品对比 | 选择两款饮品并排对比营养数据 | V2 | 3 天 |
| P2 | 收藏 / 历史 | 收藏常喝饮品,记录查看历史 | V2 | 2 天 |
| P2 | 分享卡片生成 | 一键生成好看的饮品健康数据卡片图,分享到社交媒体 | V2 | 3 天 |
| P3 | 扫码查成分 | 扫描杯身二维码 / 条形码直接跳转饮品详情 | V3 | 5 天 |
| P3 | 用户提交数据 | 众包提交品牌未公开的营养数据,社区审核机制 | V3 | 7 天 |
| P3 | 个性化推荐 | 设置健康偏好(低糖/低卡/避咖啡因),首页个性化推荐 | V3 | 5 天 |
验收标准:
验收标准:
验收标准:
验收标准:
验收标准:
Bottom Tab Navigation (4 个主 Tab)
├── [1] 首页 Home
│ ├── 搜索栏(全局搜索入口)
│ ├── 今日推荐卡片
│ ├── 榜单快捷入口(横向滑动卡片)
│ │ ├── 低卡榜
│ │ ├── 低糖榜
│ │ ├── 低咖啡因榜
│ │ └── 无植脂末榜
│ └── 最新收录饮品
│
├── [2] 榜单 Rankings
│ ├── 榜单分类 Tab(顶部横向 Tab 切换)
│ └── 饮品排行列表(可排序)
│ └── → 点击进入:单品详情页
│
├── [3] 品牌 Brands
│ ├── 品牌网格列表(Logo + 名称 + 收录数)
│ └── → 点击进入:品牌详情页
│ └── 该品牌所有饮品列表
│ └── → 点击进入:单品详情页
│
└── [4] 发现 Discover
├── 健康知识卡片列表
├── 行业动态(标准更新、品牌公示变化等)
└── [V2] 对比工具入口
启动 App ↓ 首页(默认展示低卡榜 Top 5 + 推荐 + 搜索入口) ├── 点击搜索 → 搜索结果页 → 单品详情页 ├── 点击榜单卡片 → 榜单 Tab(定位到对应分类) ├── 点击饮品卡片 → 单品详情页 │ ├── 查看营养数据 + 风险标签 │ ├── 点击成分术语 → 知识卡片弹窗 │ ├── [V2] 点击"对比" → 对比页 │ └── [V2] 点击"分享" → 生成分享卡片 └── 点击品牌 → 品牌详情页 → 单品详情页
布局:单列垂直滚动
布局:大标题头部 + 数据卡片组
布局:顶部分类 Tab + 排行列表
// 饮品 Drink
{
id: string, // 唯一标识 "heytea-duoduo-grape"
brand_id: string, // 关联品牌
name: string, // 饮品名称 "多肉葡萄"
category: enum, // 纯茶 | 奶茶 | 果茶 | 咖啡 | 酸奶
// 营养数据
calories: number, // 热量 kcal
sugar_g: number, // 含糖量 g
caffeine_mg: number, // 咖啡因 mg(可选)
protein_g: number, // 蛋白质 g(可选)
fat_g: number, // 脂肪 g(可选)
carbs_g: number, // 碳水化合物 g(可选)
trans_fat_g: number, // 反式脂肪酸 g(可选)
// 属性标签
uses_real_milk: boolean | null, // 是否使用纯奶
uses_creamer: boolean | null, // 是否含植脂末
has_real_tea: boolean | null, // 是否使用真茶
sugar_options: string[], // 可选糖度 ["正常","少糖","半糖","少少糖","不加糖"]
// 规格
size_ml: number, // 杯量 ml
size_label: string, // "中杯" | "大杯"
price_yuan: number, // 价格 元
// 评分与标签
health_score: number, // 健康评分 0-100(算法计算)
risk_tags: string[], // ["高糖","含植脂末","高咖啡因"]
// 数据来源
source_type: enum, // official | third_party | estimated
source_name: string, // "喜茶GO小程序" | "上海消保委2024测评"
updated_at: string, // ISO 日期
// App 专用
thumbnail_url: string, // 饮品缩略图 URL(可选)
}
// 品牌 Brand
{
id: string, // "heytea"
name: string, // "喜茶"
name_en: string, // "HEYTEA"
logo_url: string, // 品牌 Logo
transparency_tier: number, // 数据透明度 1(最透明) / 2 / 3
data_summary: string, // "已公开全线产品营养成分,含第三方检测报告"
drink_count: number, // 已收录饮品数量
}
// 知识卡片 KnowledgeCard
{
id: string,
title: string, // "植脂末到底是什么?"
summary: string, // 150字以内摘要
icon: string, // 图标标识
related_risk_tags: string[], // 关联的风险标签
}
评分规则(满分 100):
| 维度 | 权重 | 评分逻辑 |
|---|---|---|
| 热量 | 25 分 | ≤200kcal 满分,每超 50kcal 扣 5 分,≥500kcal 得 0 分 |
| 含糖量 | 25 分 | ≤10g 满分,每超 5g 扣 3 分,≥50g 得 0 分 |
| 植脂末 | 20 分 | 不含 = 20 分,含 = 0 分,未知 = 10 分 |
| 脂肪 | 15 分 | ≤5g 满分,每超 5g 扣 5 分 |
| 咖啡因 | 10 分 | ≤100mg 满分,每超 50mg 扣 3 分 |
| 数据完整性 | 5 分 | 字段完整度 bonus,鼓励透明品牌 |
注:V2 可引入用户可配置权重(如咖啡因敏感人群可调高咖啡因权重)
CTO 评审核心结论:数据获取是整个项目的最大风险。MVP 必须先验证数据可得性。
| 批次 | 品牌 | 收录数量 | 数据来源 | 可行性 |
|---|---|---|---|---|
| 第一批 | 喜茶、霸王茶姬 | 各 20 款热门产品 | 官方小程序 + 在线健康计算器 | 高 — 数据结构化且完整 |
| 第二批 | 奈雪的茶 | 15 款 | 官方小程序热量 + ABCD 分级 | 中 — 有热量但细项不全 |
| 第三批 | 茶百道、沪上阿姨、一点点、茶颜悦色 | 各 10 款 | 部分官方 + 消保委报告 | 中低 — 需要人工整理 |
MVP 目标:首批 2 个品牌 40 款产品上线,总计收录 5-8 个品牌 100+ 款产品。
| 阶段 | 方案 | 触发迁移条件 |
|---|---|---|
| MVP 阶段 | 本地 JSON 文件打包进 App,随版本更新数据 | — |
| 增长阶段 | 迁移至远程 API(Supabase / 自建后端),App 启动时增量同步 | 数据超过 300 条 或 需要不发版更新数据 |
| 规模阶段 | 完整后端 + 用户众包提交 + 审核机制 | DAU 超过 1000 或 开放用户提交 |
| 层面 | 技术选择 | 选择理由 |
|---|---|---|
| 框架 | React Native + Expo (SDK 53) | 一套代码双端发布;Expo 管理构建和推送;Windows 可开发 |
| 导航 | Expo Router | 基于文件系统的路由,类似 Next.js App Router,学习成本低 |
| UI 组件 | NativeWind (Tailwind for RN) | 复用 Tailwind 的原子化 CSS 思路,与 CTO 评审的 Tailwind Mobile-first 一致 |
| 状态管理 | Zustand | 轻量、无 boilerplate,适合 MVP 数据量 |
| 数据存储(本地) | JSON 静态文件 + AsyncStorage | MVP 阶段零后端成本,数据打包进 App |
| 搜索 | Fuse.js | 轻量模糊搜索库,纯前端运行,支持拼音 |
| 图表 | react-native-svg + 自绘 | 评分圆环、进度条等简单图表自绘即可,避免重依赖 |
| 构建 & 发布 | EAS Build + EAS Submit | 云构建 iOS/Android,无需 Mac |
| OTA 更新 | EAS Update | JS 代码热更新,无需重新上架即可更新数据和 UI |
tea-rank-app/ ├── app/ # Expo Router 文件路由 │ ├── (tabs)/ # Tab 导航布局 │ │ ├── index.tsx # 首页 Home │ │ ├── rankings.tsx # 榜单页 │ │ ├── brands.tsx # 品牌页 │ │ └── discover.tsx # 发现页 │ ├── drink/[id].tsx # 单品详情页 │ ├── brand/[id].tsx # 品牌详情页 │ └── search.tsx # 搜索页 ├── components/ # 可复用组件 │ ├── DrinkCard.tsx # 饮品列表卡片 │ ├── HealthScore.tsx # 健康评分圆环 │ ├── RiskTag.tsx # 风险标签 │ ├── NutritionBar.tsx # 营养数据进度条 │ └── KnowledgeCard.tsx # 知识卡片 ├── data/ # 静态数据(MVP) │ ├── drinks.json # 饮品数据 │ ├── brands.json # 品牌数据 │ └── knowledge.json # 知识卡片内容 ├── utils/ │ ├── healthScore.ts # 健康评分算法 │ └── search.ts # 搜索配置 ├── stores/ │ └── appStore.ts # Zustand 全局状态 └── assets/ # 图片、字体等静态资源
理由:与 CTO 评审建议一致——"静态 JSON 文件,零运维成本"。MVP 阶段 100+ 条饮品数据的 JSON 文件不到 50KB,随 App 发版更新即可。需要频繁更新数据时,通过 EAS Update 做 OTA 推送,不需要用户重新下载 App。
理由:CTO 评审明确指出对比功能开发成本高、初期价值有限。V1 聚焦榜单和单品详情,V2 再加对比。
理由:MVP 阶段用户无需注册。收藏功能(V2)使用设备本地存储。用户系统等到需要众包提交数据(V3)时才引入。
| 用途 | 色值 | 含义 |
|---|---|---|
| 主品牌色 | #059669 (Emerald 600) |
健康、自然、可信赖 |
| 健康/安全 | #16a34a (Green 600) |
评分 ≥ 70、安全成分 |
| 警示/中等 | #d97706 (Amber 600) |
评分 40-69、注意成分 |
| 危险/高风险 | #dc2626 (Red 600) |
评分 < 40、风险标签 |
| 背景色 | #f8fafc (Slate 50) |
浅灰背景 |
| 正文色 | #1e293b (Slate 800) |
高对比正文 |
| 组件 | 规格 |
|---|---|
| 饮品卡片(列表项) | 高度 80px,左侧排名/Logo,中间名称+品牌,右侧评分色块+关键指标 |
| 健康评分圆环 | 直径 120px(详情页)/ 40px(列表),动画填充,数字居中 |
| 风险标签 | 圆角 Chip,红底白字,高度 24px,最多显示 3 个,超出折叠 |
| 营养数据条 | 水平进度条,背景灰,填充色随占比变化(绿→黄→红) |
| 底部 Tab Bar | 4 个 Tab,图标 + 文字标签,选中态为品牌色 |
| 类别 | 要求 | 说明 |
|---|---|---|
| 性能 | 冷启动 ≤ 2 秒,列表滚动 60fps | 数据本地化,无网络延迟 |
| 离线可用 | 100% 核心功能离线可用 | MVP 数据打包进 App,无需网络 |
| 包体积 | Android APK ≤ 25MB,iOS ≤ 30MB | 控制图片资源,JSON 数据几乎不占空间 |
| 适配 | iOS 15+ / Android 10+ | 覆盖 95%+ 活跃设备 |
| 无障碍 | VoiceOver / TalkBack 基础支持 | 所有可交互元素添加 accessibilityLabel |
| 国际化 | MVP 仅支持简体中文 | V2 考虑繁体中文 |
| 数据合规 | 标注数据来源、不存储用户个人数据 | MVP 无账号系统,无隐私数据收集 |
| 阶段 | 任务 | 交付物 | 周期 |
|---|---|---|---|
| Phase 0 数据准备 |
|
drinks.json brands.json knowledge.json |
3-5 天 |
| Phase 1 核心框架 |
|
App 骨架可运行 首页可交互 |
3-4 天 |
| Phase 2 核心页面 |
|
全部 V1 页面可用 | 5-7 天 |
| Phase 3 打磨 & 内容 |
|
完整 MVP 体验 | 3-4 天 |
| Phase 4 测试 & 发布 |
|
可安装 APK App Store 提审 |
2-3 天 |
总计 MVP 周期:3-4 周(Phase 0 可与 Phase 1 并行推进)
最快路径:先只做喜茶 + 霸王茶姬 2 个品牌、Android APK 内部测试 → 最快 2 周可用
| 版本 | 核心功能 | 触发条件 |
|---|---|---|
| V2 |
|
MVP 验证用户留存 > 20% |
| V3 |
|
DAU > 1000 或数据量 > 500 |
| 等级 | 风险 | 影响 | 应对策略 |
|---|---|---|---|
| 高 | 数据获取困难 | 大部分品牌不公开营养数据,平台内容空洞 | MVP 聚焦数据最透明的 2-3 个品牌;利用消保委等第三方报告补充;明确标注"数据缺失"而非不展示 |
| 高 | 数据准确性争议 | 品牌方或用户质疑数据真实性 | 每条数据标注来源和时间;优先使用官方公示数据;使用"估算值"标签标注非官方数据 |
| 中 | 获客难度(无 SEO) | App 无法通过搜索引擎自然获客 | 设计社交分享卡片促进裂变;应用商店 ASO 优化;小红书/抖音内容营销;考虑同步上线 H5 落地页做 SEO |
| 中 | iOS 发布门槛 | 需要 Apple 开发者账号($99/年)+ 审核周期 | MVP 先发 Android APK 直接分发;iOS 先用 Expo Go 开发预览;用户量验证后再投入 iOS 上架 |
| 中 | 数据时效性 | 品牌新品/配方调整导致数据过时 | 标注数据更新时间;通过 EAS Update 做 OTA 数据更新;V3 引入用户反馈机制 |
| 低 | 法律合规风险 | 品牌方投诉数据使用 | 仅使用公开数据 + 第三方检测报告;标注"仅供参考"声明;不做商业评价只做数据展示 |
| 指标 | 目标 | 衡量方式 |
|---|---|---|
| 安装量 | ≥ 200 | APK 下载 + App Store 安装 |
| 次日留存率 | ≥ 25% | 第二天再次打开 App 的用户比例 |
| 人均查看饮品数 | ≥ 5 款/次 | 单次会话中查看单品详情的次数 |
| 核心流程完成率 | ≥ 60% | 从首页进入 → 查看某款饮品详情的转化率 |
| 用户反馈 | 收集 ≥ 20 条 | 内嵌反馈入口 / 社群收集 |