# FocusBuddy MVP 上线清单 **目标**: 4 周内完成可上线版本 **策略**: 最小可行 → 快速上线 → 迭代优化 **创建日期**: 2025年11月22日 --- ## 一、MVP 功能精简建议 ⚠️ ### 1.1 必须保留(核心价值) | 功能 | 优先级 | 理由 | |------|--------|------| | ✅ 一键开始专注(25分钟固定) | P0 | 降低选择成本 | | ✅ "I got distracted" 按钮 | P0 | 核心差异化功能 | | ✅ 4种分心分类 | P0 | 提供情感支持 | | ✅ 鼓励文案反馈 | P0 | 体现"温柔"定位 | | ✅ 简单完成统计 | P0 | 提供成就感 | ### 1.2 建议延后(V1.1 迭代) | 功能 | 延后理由 | 替代方案 | |------|---------|---------| | ⏸️ 时长滑动调整(5-60分钟) | 增加开发复杂度 | 固定25分钟 + 设置页预设3个选项 | | ⏸️ 白噪音播放 | 需要音频资源采购 + 测试 | V1.0 不实现,聚焦核心体验 | | ⏸️ PDF 报告导出 | 复杂度高,用户需求待验证 | 先用截图分享替代 | | ⏸️ 成就徽章动画 | 需要 Lottie 资源 | 简化为静态图标 + 文字 | | ⏸️ 每周趋势图表 | 需要图表库 | 仅显示"今日总时长" | ### 1.3 MVP 最小功能集(3个核心页面) **页面1: Home Screen** - 大按钮: "Start Focusing (25 min)" - 小字提示: "Tap 'I got distracted' anytime — no guilt." - 底部导航: History | Settings **页面2: Focus Screen** - 倒计时: 24:37 - 按钮: "I got distracted" (弹出4选项) - 按钮: "Pause" | "Stop" **页面3: Complete Screen** - 标题: "You focused for 24 minutes" - 今日统计: "Total today: 47 mins | Distractions: 2" - 鼓励语: 随机一条 - 按钮: "Start Another" **附加页面(简化版):** - History: 仅显示当天记录(列表) - Settings: 默认时长选择 | 隐私政策链接 | 去广告按钮 --- ## 二、技术实现优化建议 ### 2.1 依赖包精简(减少集成风险) **必须集成:** ```yaml dependencies: flutter: sdk hive: ^2.2.3 # 本地存储 hive_flutter: ^1.1.0 flutter_local_notifications: ^17.0.0 # 计时完成通知 path_provider: ^2.1.0 # 存储路径 ``` **暂缓集成(V1.1):** ```yaml # workmanager: ^0.5.2 # 后台任务(MVP 不需要) # lottie: ^3.0.0 # 动画(用静态图标替代) # just_audio: ^0.9.36 # 音频(延后) # pdf: ^3.10.0 # 报告导出(延后) ``` **广告延后到 V1.0.1:** ```yaml # google_mobile_ads: ^4.0.0 # 先上架审核通过再加广告 ``` ### 2.2 数据结构简化 ```dart // 最小可行数据模型 @HiveType(typeId: 0) class FocusSession { @HiveField(0) DateTime startTime; @HiveField(1) int durationMinutes; // 实际专注时长 @HiveField(2) int distractionCount; // 分心次数(简化为计数) @HiveField(3) bool completed; // 是否完成 } // V1.1 再扩展详细分心类型 ``` ### 2.3 动画简化策略 | 原设计 | MVP 简化方案 | 节省开发时间 | |--------|-------------|-------------| | Lottie 粒子背景 | 纯色背景 + CSS 渐变 | 1天 | | 计时器呼吸动画 | 静态显示 | 0.5天 | | 成就徽章弹出 | 简单文字卡片淡入 | 1天 | | 底部弹窗拖拽 | 标准 showModalBottomSheet | 0.5天 | **总计节省: 3天开发时间** --- ## 三、上线前必备清单 ### 3.1 应用商店准备 #### iOS App Store - [ ] **开发者账号** ($99/年,需提前注册) - [ ] **App 图标** 1024×1024 (无透明通道,必须) - [ ] **截图** 至少3张 (6.5" iPhone) - 建议: Home页 | Focus页 | Complete页 - [ ] **隐私政策链接** (托管在 GitHub Pages) - [ ] **应用描述** (英文,150-200字) - [ ] **关键词** (最多100字符) - 建议: focus,timer,pomodoro,gentle,ADHD,productivity,neurodivergent #### Google Play Store - [ ] **开发者账号** ($25 一次性) - [ ] **App 图标** 512×512 - [ ] **截图** 至少2张 + 1张横幅图 (可选) - [ ] **隐私政策链接** - [ ] **内容分级问卷** (选择 "Everyone") - [ ] **短描述** (80字) + 完整描述 (4000字) ### 3.2 合规文档(必须完成) **优先级 P0:** - [x] [privacy-policy.md](privacy-policy.md) - 需填写开发者信息 - [ ] **Terms of Service** (服务条款) - 简单版即可 - [ ] **Support Email** (必须可用) - 建议: focusbuddy.support@gmail.com **模板待补充:** - [ ] 应用商店描述文案(中英文) - [ ] 关键词优化列表 - [ ] ASO 元数据表格 ### 3.3 测试清单(上线前必测) #### 功能测试 - [ ] 计时器倒计时准确(误差 < 1秒/分钟) - [ ] "I got distracted" 不中断计时 - [ ] 数据持久化(关闭 App 重开数据仍在) - [ ] 完成后统计正确(时长 + 分心次数) - [ ] 暂停/恢复功能正常 #### 平台测试 - [ ] iOS 真机测试(至少1台,推荐 iPhone 12+) - [ ] Android 真机测试(至少2台不同品牌) - [ ] 适配刘海屏/水滴屏 - [ ] 横竖屏切换不崩溃 #### 边界测试 - [ ] 计时到0秒时行为正常 - [ ] 快速点击按钮不崩溃 - [ ] 本地存储达到上限时处理(建议保留最近100条) - [ ] 系统通知权限被拒绝时提示 #### 性能测试 - [ ] 内存占用 < 100MB - [ ] 冷启动时间 < 2秒 - [ ] 电池消耗正常(1小时专注 < 5%电量) --- ## 四、风险预警与应对 ### 4.1 高风险项(可能导致延期) | 风险 | 概率 | 影响 | 预防措施 | |------|------|------|---------| | **iOS 审核被拒** | 60% | 延期1-2周 | 提前研读 [App Store 审核指南](https://developer.apple.com/app-store/review/guidelines/),避免医疗声明 | | **AdMob 账号被封** | 30% | 收入归零 | MVP 先不集成广告,等有用户再加 | | **Flutter 版本兼容问题** | 40% | 延期3-5天 | 使用稳定版 Flutter 3.16+,依赖包固定版本 | | **真机测试发现严重 Bug** | 50% | 延期1周 | 第2周即开始真机测试,不要等到最后 | ### 4.2 应对策略 **Plan A (理想):** 4周完成上线 **Plan B (现实):** 5-6周完成(预留缓冲) **Plan C (保底):** 先上架 Android(审核更快),iOS 延后 --- ## 五、MVP 开发路线图(调整版) ### Week 1: 核心框架 + 基础 UI **目标:** 能跑通主流程,无需完美 - Day 1-2: Flutter 环境搭建 + 项目初始化 - 创建项目结构(参考 [ui-design-spec.md](ui-design-spec.md:589-619)) - 集成 Hive + 配置主题色 - Day 3-4: Home 页 + Focus 页 UI - 硬编码数据,先实现布局 - 按钮可点击,无实际逻辑 - Day 5-7: 计时器核心逻辑 - 倒计时功能(使用 `Timer.periodic`) - 暂停/恢复/停止 - **里程碑:** 能完整跑一次25分钟计时 ### Week 2: 数据持久化 + 分心记录 **目标:** 数据能保存和读取 - Day 8-9: Hive 数据存储 - 定义 FocusSession 模型 - 保存到本地数据库 - Day 10-11: 分心按钮 + Bottom Sheet - 4种分心类型选择 - 点击后显示鼓励文案(Toast) - Day 12-14: Complete 页 + 统计逻辑 - 显示当次专注时长 - 计算今日总时长和分心次数 - **里程碑:** 能看到历史数据 ### Week 3: 设置页 + 通知 + 真机测试 **目标:** 功能完整,开始测试 - Day 15-16: Settings 页面 - 3个预设时长选择(15/25/45分钟) - 去广告按钮(占位,不实现) - 隐私政策链接 - Day 17-18: 本地通知 - 计时完成时弹通知 - 处理权限请求 - Day 19-21: 真机测试 + Bug 修复 - iOS 和 Android 各测至少2轮 - 修复崩溃和明显 Bug - **里程碑:** 可以交给朋友测试 ### Week 4: 上架准备 + 提交审核 **目标:** 提交 App Store 和 Play Store - Day 22-23: 应用图标 + 截图制作 - 设计工具: Figma / Canva - 准备所有尺寸资源 - Day 24-25: 商店页面填写 - 撰写应用描述(参考竞品) - 上传隐私政策到 GitHub Pages - Day 26: iOS 提交审核 - 打包 IPA + 上传 App Store Connect - 提交审核(通常需要1-3天) - Day 27: Android 提交审核 - 打包 AAB + 上传 Google Play Console - 提交审核(通常需要1-7天) - Day 28: 缓冲时间 - 处理审核反馈 - 准备推广素材 --- ## 六、产品设计补充建议 ### 6.1 增加的必要功能 #### 1. Onboarding 引导页(首次启动) **为什么需要:** - 解释 "I got distracted" 按钮的独特价值 - 降低新用户困惑 **设计(2-3页滑动):** ``` 页面1: 标题: "Focus without guilt" 说明: "This app is different — it won't punish you for losing focus." 页面2: 标题: "Tap when you get distracted" 说明: "We'll gently remind you to come back. No shame, no stress." 页面3: 标题: "Track your progress" 说明: "See how you're improving, one session at a time." [Get Started] ``` **实现:** - 使用 `SharedPreferences` 存储是否首次启动 - 使用 `PageView` 实现滑动 - **开发时间:** 1天 #### 2. 空状态提示(History 页无数据时) **当前问题:** 首次使用时 History 是空的,用户不知道发生了什么 **建议设计:** ``` ┌─────────────────────────────────┐ │ │ │ 📊 │ │ │ │ No focus sessions yet │ │ │ │ Start your first session │ │ to see your progress here! │ │ │ │ [Start Focusing] │ │ │ └─────────────────────────────────┘ ``` #### 3. 后台计时提醒 **当前问题:** 用户切到其他 App 可能忘记正在计时 **建议实现:** - 进入后台时显示系统通知: "Focus session in progress — 12:34 remaining" - 使用 `flutter_local_notifications` 持续更新 - **开发时间:** 0.5天 #### 4. 计时完成后的行为 **当前缺失:** 用户看到 Complete 页后,下一步做什么? **建议增加:** - "Take a 5-min break" 按钮(开始休息倒计时) - "Start another session" 按钮(直接开始) - "View history" 按钮(查看统计) ### 6.2 文案优化 #### 当前问题 部分文案过于书面,不够"温柔" **建议修改:** | 原文案 | 优化后 | 理由 | |--------|--------|------| | "Focus Complete" | "Nice work!" | 更口语化 | | "Distractions: 2 times" | "Got distracted 2 times — that's okay!" | 强化无惩罚感 | | "Total today: 47 mins" | "You've focused for 47 mins today" | 更个人化 | #### 增加失败场景文案 **场景:** 用户点击 "Stop" 提前结束 **当前:** 无提示 **建议:** ``` 弹窗: "Want to stop early? That's totally fine — you still focused for 12 minutes!" [Yes, stop] [Keep going] ``` ### 6.3 成就系统简化(MVP 版) #### 原方案问题 主题皮肤需要大量设计资源 + 广告收益不确定 **MVP 替代方案: 文字徽章** ```dart // 简单的里程碑系统 Map achievements = { 1: "🌱 First Step", // 完成第1次 5: "🔥 Getting Started", // 完成第5次 10: "⭐ Steady Focus", // 完成第10次 25: "💪 Focus Champion", // 完成第25次 50: "🏆 Focus Master", // 完成第50次 }; ``` **显示方式:** - 完成时弹出简单卡片 - Settings 页显示已解锁徽章列表 - **开发时间:** 0.5天(比主题系统节省2-3天) --- ## 七、商业化路径(上线后) ### 7.1 MVP 上线策略(免费 + 无广告) **为什么先不加广告?** 1. ✅ iOS 审核通过率更高(广告常被拒) 2. ✅ 用户体验更好,初期口碑传播更快 3. ✅ 先验证产品价值,再考虑变现 **V1.0 → V1.1 加广告时机:** - 下载量 > 1000 - 日活用户 > 100 - App Store 评分稳定在 4.5+ ### 7.2 优化后的变现模型 | 版本 | 变现方式 | 说明 | |------|---------|------| | **V1.0 (MVP)** | 完全免费 | 快速获取用户,验证留存 | | **V1.1** | 激励视频广告 | 看广告解锁"额外鼓励语" | | **V1.2** | IAP 去广告 | $1.99(比原方案便宜,提高转化) | | **V2.0** | Pro 订阅 | $0.99/月,含白噪音 + PDF 报告 | ### 7.3 核心指标追踪(手动记录) **MVP 阶段(前30天):** - 下载量(每天记录 App Store / Play Store 数据) - 留存率: Day1 / Day7 / Day30 - 完成专注次数: 人均完成数 - Crash 率(使用 Firebase Crashlytics 免费版) **目标:** - Day1 留存 > 40% - Day7 留存 > 20% - 人均完成 > 3次/周 **如果达不到:** 说明产品体验有问题,需要迭代核心功能 --- ## 八、应用商店 ASO 素材模板 ### 8.1 App Store 文案 **App 名称:** ``` FocusBuddy - Gentle Focus Timer ``` **副标题 (30字符):** ``` Focus without guilt or shame ``` **描述 (英文):** ``` FOCUS WITHOUT GUILT FocusBuddy is different. It won't punish you for getting distracted. 🌿 TAP "I GOT DISTRACTED" ANYTIME No shame. No stress. Just a gentle reminder to come back. 💚 BUILT FOR NEURODIVERGENT MINDS If traditional focus timers make you feel bad, this one's for you. 📊 TRACK YOUR PROGRESS See how you're improving — without judgment. ✨ PRIVATE & OFFLINE All your data stays on your device. No cloud sync. No tracking. --- "Finally, a focus app that doesn't make me hate myself." - Beta tester Made with care for people who think differently. ``` **关键词 (100字符,逗号分隔):** ``` focus,timer,pomodoro,ADHD,productivity,gentle,neurodivergent,study,work,mindful ``` ### 8.2 Google Play 文案 **短描述 (80字):** ``` A focus timer that won't shame you for getting distracted. Track gently. ``` **完整描述:** ``` (同 App Store,格式转为 Markdown) WHAT MAKES IT DIFFERENT? • Tap "I got distracted" without stopping the timer • Get gentle encouragement instead of punishment • See patterns in what pulls you away • 100% offline and private WHO IS IT FOR? Perfect for anyone who struggles with traditional focus apps: ✓ ADHD / ADD ✓ Anxiety ✓ Autistic individuals ✓ Anyone with attention challenges FREE. NO ADS (for now). NO TRACKING. Download and start focusing — gently. ``` --- ## 九、上线后 30 天行动计划 ### Week 1: 冷启动(目标: 100 下载) - Day 1: 在 r/ADHD 发帖分享(参考[产品设计方案](product-design.md:179-188)) - Day 3: 在 ProductHunt 首发(周三上线效果最好) - Day 5: 发 TikTok 短视频(展示 "I got distracted" 按钮) - Day 7: 统计数据,回复所有评论和反馈 ### Week 2-3: 社区渗透(目标: 500 下载) - 在 ADHD 相关 Discord/Slack 分享 - 联系 3-5 个 ADHD YouTuber(提供 Pro 版兑换码) - 在 Indie Hackers / Hacker News 分享开发故事 ### Week 4: 优化迭代 - 分析用户反馈,提取高频需求 - 修复 Crash 和严重 Bug - 规划 V1.1 功能(根据数据决定) --- ## 十、应该删除/推迟的原方案内容 ### ❌ 删除(与 MVP 理念冲突) 1. **TopOn 广告聚合** - 过度优化,AdMob 够用 2. **Export PDF Report** - 用户需求未验证 3. **Body Doubling Lite** - 概念模糊,延后到 V2.0 ### ⏸️ 推迟到 V1.1+ 1. **主题皮肤系统** → 简化为文字徽章 2. **白噪音播放** → 等有收入后再做 3. **每周趋势图表** → 先用简单列表 4. **时长滑动条** → 固定25分钟 + 设置页3选项 ### ✅ 保留(核心差异化) 1. ✅ "I got distracted" 按钮 2. ✅ 4种分心分类 3. ✅ 鼓励文案库 4. ✅ 无惩罚机制 5. ✅ 100% 离线 --- ## 总结: MVP 成功的3个关键 ### 1. 功能聚焦 **只做最能体现差异化的功能** - "I got distracted" + 鼓励文案 ### 2. 快速上线 **4周必须提交审核** - 延期会导致热情消退 ### 3. 数据驱动 **上线后看留存率** - 如果 Day7 留存 < 20%,说明产品不成立 --- **接下来的行动:** 1. [ ] 确认是否接受 MVP 功能精简建议 2. [ ] 补充 [隐私政策](privacy-policy.md:4) 开发者信息 3. [ ] 准备开发者账号(iOS $99 + Android $25) 4. [ ] 开始 Week 1 开发 --- **Document Status:** ✅ Ready for Review **Next Update:** 根据实际开发进度调整里程碑