Skip to content

Repository files navigation

remember-lightly

remember-lightly 是一个本地优先的体重管理 PWA。

它的目标不是做成复杂的健康平台,而是帮助用户用最低心智成本完成三件事:

  • 快速记录体重
  • 看到长期趋势
  • 获得温和、持续的反馈

当前项目基于 Vue 3 + Vite + Pinia + IndexedDB + ECharts 构建,支持离线使用、目标进度、趋势分析、JSON 导入导出、本地 AI 解读,以及可选的 BYOK 远程 AI 复盘。

功能概览

  • 今日体重记录
  • 可折叠扩展指标:体脂率、围度、BMI 自动计算
  • 历史记录查看、编辑、删除
  • 打卡热力图
  • 体重变化趋势图
  • 趋势平滑切换:MA7 / EWMA
  • 目标体重与目标进度
  • 简单统计:连续记录、本周变化、当前变化
  • 本地 AI 分析:趋势判断、鼓励文案、异常波动提醒、连续记录奖励
  • 远程 AI 分析:GPT / DeepSeek / 千问 / 自定义 OpenAI 兼容接口
  • 远程 AI 增强能力:分析风格、分析窗口、结果缓存
  • 本地数据导入导出:覆盖导入 / 合并导入
  • 数据安全:持久化存储申请
  • PWA 基础能力、更新提示、快捷入口、iOS 适配

技术栈

  • Vue 3
  • Vite
  • TypeScript
  • Pinia
  • Vue Router
  • IndexedDB + idb
  • ECharts
  • vite-plugin-pwa

本地开发

安装依赖:

pnpm install

启动开发环境:

pnpm dev

类型检查:

pnpm typecheck

生产构建:

pnpm build

目录结构

.
├── .github/workflows/      # CI 与 GitHub Pages 部署
├── docs/                   # 规划文档与产品优化记录
├── docs/planning/          # 产品规划与任务拆解文档
├── public/                 # 静态资源与 PWA 图标
├── src/
│   ├── app/                # 路由等应用层配置
│   ├── components/         # 业务组件
│   ├── pages/              # 页面
│   ├── repositories/       # IndexedDB 数据访问层
│   ├── services/           # 统计、导入导出、AI 分析等服务
│   ├── stores/             # Pinia 状态管理
│   ├── types/              # 类型定义
│   └── utils/              # 通用工具
├── README.md
├── package.json
├── pnpm-lock.yaml
└── vite.config.ts

规划文档

  • 技术方案:weight-management-pwa-v1-tech-plan.md
  • MVP 任务拆解:weight-management-mvp-task-breakdown.md
  • 产品优化记录:product-optimization-log.md

当前实现重点

  • 本地优先:所有记录与配置都保存在本地 IndexedDB
  • 数据安全:应用启动会请求持久化存储,降低浏览器静默清理风险
  • 多指标记录:支持在设置中开启体脂率、围度和 BMI
  • 趋势体验:图表支持懒加载、视口延迟渲染、MA7 / EWMA 切换
  • 激励反馈:记录页包含打卡热力图,首页包含本地分析与 AI 分析双模块
  • BYOK:支持自定义 API Key / Model / Base URL,并带连接测试、结果缓存与远程复盘
  • 工程质量:已接入 Vitest,核心计算工具与统计服务保持 100% 覆盖率

部署

项目已包含:

  • GitHub Actions CI
  • GitHub Pages 自动部署工作流
  • PWA 基础配置

如果仓库已启用 GitHub Pages 并选择 GitHub Actions 作为发布方式,推送到 main 后会自动触发部署。

About

记录你的体重

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages