← 返回上一页
01 / 07
已上线 · 独立产品

画迹

微习惯追踪App · 从0到1独立产品 · 已上线运营

Vue 3
TypeScript
Pinia
Tailwind
IndexedDB
Capacitor

habit-tracker-painting.ccwu.cc

Vue 3 + TypeScript · Pinia · Tailwind · IndexedDB

查看 Demo
产品名称 渐成画迹
我的角色 独立产品负责人。从需求调研、PRD撰写、原型设计到技术架构、前后端开发、测试验收、上线部署,全流程独立完成。
技术栈 Vue 3 + TypeScript + Pinia + Tailwind CSS + IndexedDB + Capacitor
项目周期 2026.03 - 2026.05
需求发现与验证

为什么做这款 App

2026年初Vibe Coding爆火,我在毕设期间深刻体会到工具效率对执行力的影响。通过访谈目标朋友与4款竞品分析,找到「游戏化过头」与「工具感太强」之间的空白。

01

排序经常 Bug

自定义排序没实现,还是按新增顺序排,列表顺序不可控。

02

分数算法不透明

不知道今天为什么得这个分,统计口径说不清。

03

没有多标签分类

工作和健身习惯混在一起,标签一多就找不到重点。

04

不支持临时事项

固定习惯与临时待办两头跑,无法统一视图管理。

05

进度展示太枯燥

全是冰冷数据,坚持很久却看不到成就感,容易放弃。

验证

访谈目标朋友,多位有类似痛点

竞品两极分化:要么太游戏化增加焦虑,要么太工具化缺少激励与透明规则。

微习惯

纯工具型,排序Bug,分数不透明,无标签,无临时事项

微笑ToDo

工具+情感化,但习惯/待办分离,无程度打卡,无多标签

Forest

专注场景强但习惯追踪弱,有惩罚机制增加焦虑

差异化定位:零压力伴侣型习惯追踪工具

渐成画迹 = 微习惯理念(小目标、无压力)+ 像素画渐进激励(从模糊到清晰)+ 零压力设计(权重冻结、无断签惩罚)。定位在"游戏化过头"和"工具感太强"之间,强调「自我对话」而非外部比较。名字由来:从Trae AI多轮对话后10个选项中挑选——渐进养成,留下痕迹,符合微习惯"小步快跑"的理念,"画迹"呼应拼豆像素画的视觉主题。

Core Features

核心功能展示

六大核心能力覆盖「创建 → 执行 → 组织 → 回顾 → 激励」完整闭环。

👇 点击标签切换功能介绍

今日混合清单

固定习惯与临时事项在同一张清单中混排展示。用户可自由拖拽调整顺序,排序结果在重启后依然稳定。规则排序仅影响当前视图,不会覆盖手动顺序。

支持单次目标与多次目标习惯。目标为 1 时一键完成;目标大于 1 时显示 +1 按钮逐步推进,并实时展示进度。

固定习惯 临时事项 拖拽排序 按日期查看
今日清单-默认态
图片. 默认态:习惯列表、+1 按钮与打卡按钮
今日清单-完成态
图片. 完成态:已完成、+1 进度与已归档状态

过往补卡

仅允许过去且「应出现」的日期补打卡,拦截时给出明确原因。补打卡完成次数大于1,可直接输入完成次数,减少补卡操作次数。补卡完成也会获得权重,影响后续统计。

一键完成 补打卡限制 备注可选
过往补卡-日历回顾
图片. 日历回顾:选择日期查看习惯状态
过往补卡-补卡输入
图片. 补卡输入:直接输入完成次数
过往补卡-补卡确认
图片. 补卡确认:确认补打卡操作

标签聚合

习惯与临时事项均可绑定多标签。标签页采用「今日待办置顶 + 其他区」双区结构,置顶区严格对应本地今天,不受日历选中日期影响,帮助用户快速聚焦当前任务。

多标签绑定 双区结构 今日置顶 标签管理
标签聚合-全部标签
图片. 全部标签:双区结构展示
标签聚合-健康标签
图片. 健康标签:筛选后聚焦
标签聚合-添加标签
图片. 添加标签:新建标签弹窗
标签聚合-搜索标签
图片. 搜索标签:关键词检索

透明统计

提供日、周、月、年四个周期视图,结合趋势图、习惯榜单与打卡日历。所有统计口径在「产品说明」中集中解释,让用户知道数字「为什么这样算」。

日周月年 趋势图 习惯榜单 口径说明
透明统计-周视图
图片. 周视图:趋势与榜单
透明统计-日视图
图片. 日视图:今日进度
透明统计-月视图
图片. 月视图:月度日历
透明统计-年视图
图片. 年视图:年度热图

像素风激励

完成任意习惯当日目标即可获得 1 权重,推动当前图片从空白(阶段 0)逐步显现至完全清晰(阶段 5)。阶段 4 与阶段 5 自动提示保存快照,照片箱子最多保存 50 张。

0-5 阶段 权重累计 快照保存 照片箱子
像素风激励-阶段4
图片. 阶段 4:临近解锁
像素风激励-阶段5
图片. 阶段 5:完整解锁
像素风激励-保存快照
图片. 保存快照:阶段提示
像素风激励-照片箱子
图片. 照片箱子:历史快照

主题与提醒

支持跟随系统、浅色、深色三种模式,提供 10 种预设主题色实时预览。每个 habit 可设置最多 3 个提醒时间点,已完成或归档状态自动豁免提醒,并支持全局免打扰时段。

深色模式 10 种主题色 本地提醒 免打扰
主题与提醒-主题颜色
图片. 主题颜色:10 种预设色
主题与提醒-设置首页
图片. 设置首页:功能入口
主题与提醒-归档习惯库
图片. 归档习惯库:管理归档
Perler Bead Incentive

像素风激励可视化

每一次完成当日目标,都会为画作增添一粒「像素风」。拖动滑块,感受从空白底板到完整画作的渐进过程。

像素风阶段 0

阶段 0 → 5,权重驱动显现

权重 0 时为空白底板;随着权重增加,像素风逐渐显色;达到权重 15 时图案完全清晰。阶段 4(权重 12)与阶段 5(权重 15)会自动提示保存快照。

0
0
空白底板
1
3
朦胧轮廓
2
6
浅影初现
3
9
形体渐明
4
12
完全显现
5
15
进化完成
产品定义与技术架构

从定义到实现

PRD → TDD → DBD → TestPlan 四分文档驱动,先定义验收标准再写代码。

点击标签切换内容

P0 核心问题定义

怎么让用户愿意开始? → 降低启动门槛(无需注册登录、3分钟创建习惯)

怎么让用户愿意持续? → 正向激励而非负向惩罚(权重冻结、拼豆渐进)

怎么让用户信任数据? → 统计透明、口径清晰(产品说明集中解释)

Kano 模型 + 2×2 矩阵决策

P0 · 高价值低成本

拼豆激励 / 临时事项混排 / 标签系统 → 差异化竞争;打卡 / 提醒 / 日历 → 产品底线必须做

P1 · 高价值高成本

云同步 → Repository模式预留扩展,P1可低成本接入Supabase

排除 · 反向需求

社交 / 排行榜 / 番茄钟 → 与"零压力自我对话"定位冲突

四分文档体系

核心原则"先定义验收标准,再写代码"。PRD定义24项AC → HTML原型验证23/24项 → TDD输出架构设计和核心算法 → AI按TDD生成代码 → TestPlan逐项验收。需求层面0次返工,四分文档交叉检查确保口径一致。

PRD

产品需求文档

15项FR · 6大场景 · 3类画像 · P0/P1/P2分级 · 24项AC验收标准

TDD

技术设计文档

组件树 · 数据流 · 路由设计 · 核心算法 · API设计

DBD

数据库设计

7张核心表 · ER关系 · 索引策略 · Repository模式

TestPlan

测试计划

24项AC · 5层测试 · 原型验收23/24通过

技术选型决策

Vue 3 + TypeScript + Pinia

Composition API适合复杂状态管理,TS类型安全减少AI代码bug

IndexedDB + Dexie.js

容量大(>5MB)、Promise封装代码量减少60%,可低成本迁移Supabase

Capacitor

无需审核快速迭代,作为提醒功能补丁(原生通知)

CSS Grid 像素渲染

225个DOM节点完全可控,Tailwind直接调blur/opacity实现渐进效果

设计系统

低饱和温暖色系,主色 #D97757。6色辅色板 + 深色/浅色双模式CSS变量。间距系统xs(4px)→2xl(32px),列表触控最小高度48px,安全区域适配 env(safe-area-inset-*)。

核心算法

① shouldAppear 判定

today >= startDate && 频率匹配 && !paused && !archived

② dayCompletion 计算

dayCompletion = min(1, doneCount / target)

③ 权重冻结

canEarnWeight: if(alreadyEarned) return false; return doneCount >= target
核心算法图1 - shouldAppear判定与频率变更
图片. shouldAppear 判定与频率变更
核心算法图2 - 权重冻结与连续性算法
图片. 权重冻结与连续性算法
DBD数据库表结构图1 - habits/checkins/oneOffTasks索引
图片. 数据库表结构 - 索引定义
DBD数据库表结构图2 - Checkin/OneOffTask/Tag字段定义
图片. 数据库表结构 - 字段定义
质量保障与数据

验证与交付

原型验收、程序化测试、真机测试与Bug修复记录。

16
高保真原型
24
验收标准(AC)
23/24
原型通过
<500ms
100+习惯计算
50
快照上限(LRU)
10
内存LRU缓存
点击标签切换内容

原型验收成果

23/24通过(95.8%) —— 15项直接确认 + 8项部分通过需技术实现
1项留待代码验证:补打卡限制逻辑(AC-6)
核心验证通过:AC-1创建打卡、AC-5双区结构、AC-9激励页、AC-12日历
空态覆盖:标签页有空原型;今日清单/照片箱子用v-if渲染

P0 冻结原则

P0功能(创建习惯/今日打卡/激励显示)在UI冻结后不可新增,仅修复阻断级缺陷。证明范围管理意识——知道什么东西必须在deadline前守住。

原型验收表1 - AC-1至AC-7验收结果
图片. AC-1 ~ AC-7 验收结果
原型验收表2 - AC-11至AC-18验收结果
图片. AC-11 ~ AC-18 验收结果

Bug 修复记录

发现2个关键Bug并修复,确保核心逻辑100%通过验收。

Bug1:补打卡"应出现日"校验

错误:补打卡时未校验频率,导致非应出现日也能补打卡
修复:复用 shouldAppear 算法统一校验补打卡资格
影响:修复后补打卡限制逻辑100%通过AC-6验收

Bug2:拼豆页面状态同步

错误:打卡后权重增加,但clarity未同步更新
修复:Pinia Store触发视图刷新
影响:225个DOM节点blur/opacity即时响应

测试分层策略

① 程序化测试 shouldAppear / completion / 连续性 单元测试
② 人工判断 UI交互流程 · 视觉一致性 · 异常提示语
③ 真机测试 iOS Safari · Android Chrome · PWA安装测试
测试报告1 - 测试概述与覆盖模块
图片. 测试概述与覆盖模块
测试报告2 - habits store测试详情
图片. habits store 测试详情
测试报告3 - checkins store测试详情
图片. checkins store 测试详情
测试报告4 - 性能数据与LRU缓存策略
图片. 性能数据与LRU缓存策略