跳到正文
余翰林 · 产品作品集
返回

情侣心愿 App:3 天 5 阶段交付一个双人产品

我的角色

独立开发者:需求定义、五阶段拆解、全部前后端实现与部署

技术栈

Vue 3 · Pinia · Vue Router · Vite · Supabase · Vercel

一、背景与问题

情侣之间的约定和心愿,散落在聊天记录里就等于没有:说好的事情会被遗忘,做了的事情没有记录,付出没有被看见。

我想做一个双人闭环产品:一方发心愿,另一方接单完成;完成拿积分,积分在两人之间流转;重要日子上互动日历,日常写共同日记。约束很硬:我只有零碎时间,必须小步快跑;双人数据要真实同步,不能是本地演示。

二、我的角色

独立开发者,负责需求定义、五阶段任务拆解、全部前后端实现与部署。这是我第一次在单项目里完整走”纯前端 MVP → 真后端化”的两段式路径。

三、过程与关键取舍

取舍 1:先闭环,后真实。 MVP 阶段(第二天)我没有先接后端,而是用”身份切换器”模拟双人——心愿发 → 卡片墙 → 接单 → 完成 → 通知的完整闭环先在本地跑通。第三天再把 Supabase 接进来替换存储与 Auth。这样产品逻辑和数据接入两类问题永远不混在一起调试。

取舍 2:注册中心架构 + 单向依赖。 沿用我在其他项目验证过的模块注册中心模式,模块注册先于路由求值;store 之间强制单向依赖(核心心愿 store → 辅助通知 store),确需反向引用时用动态 import 打破循环。跨模块状态同步用 CustomEvent 而不是 store 互引。

取舍 3:本地能跑 ≠ 生产能跑。 部署时踩了一个经典分叉:生产构建报 Vue Router 无限重定向,本地 dev 却正常——根因是 ESM 导入顺序在 Vite dev 与 Rollup 生产构建下求值不同,模块注册晚于路由求值。以及 CI 本地构建时 VITE_* 环境变量为空(它们只配在 Vercel 平台)。解法:注册导入前置 + 改用 vercel deploy 让 Vercel 服务器构建。这两个坑让我把”环境差异”写进了自己的排错清单。

四、结果与量化

五、复盘与反思

成立的:两段式交付(先闭环后真实)让 3 天节奏成为可能;阶段笔记当天写,坑当天固化。

要改进的:积分数值一开始凭感觉定,没做任何设计推演——如果重来,我会先画”行为 → 积分 → 兑换”的激励闭环图再定数值;双人产品的边界情况(一方长期不活跃)在 v1 里完全没有处理。

下次会验证的:把积分激励闭环当产品设计练习重新做一版,作为产品方法论的证据补充。