news 2026/10/8 7:13:05

openGym年度训练热力图:可视化你的坚持程度

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
openGym年度训练热力图:可视化你的坚持程度

openGym年度训练热力图:可视化你的坚持程度

【免费下载链接】openGymSelf-hosted gym & body-weight tracker — plan routines, log workouts (supersets, warm-ups, cardio), see which muscles are trained, fatigued or detrained, import from FitNotes/Strong/Hevy, passkey login. Your data, your server.项目地址: https://gitcode.com/GitHub_Trending/op/openGym

openGym 是一个自托管的健身与体重追踪工具,其中最直观的「年度训练热力图」功能,能把过去 12 个月的每一次训练渲染成 GitHub 贡献图风格的绿色方块矩阵——训练时间、训练量一目了然,让你一眼看清自己的坚持程度。数据全部保存在你自己的服务器上,配合 passkey 登录和多设备同步,隐私与便利性兼得。

什么是训练热力图?为什么值得看

热力图(Heatmap)借鉴了程序员熟悉的「每日贡献图」:横轴是 52 周的列,纵轴是一周 7 天,每个小方格代表某一天,颜色越深代表训练投入越多。

在 openGym 的统计页里,这张图覆盖最近 12 个月,并且提供了两种着色维度:

指标含义适合回答的问题
⏱ 时间(Time)当天累计训练时长(分钟)「我每周到底花了多少时间在健身房?」
📊 体积(Volume)当天完成的总训练量(重量 × 次数 × 组数)「我的训练强度是否在稳步提升?」

颜色分 5 档(从几乎不可见到最亮的主题色),档位不是固定阈值,而是按你自己数据的四分位数动态计算的——对新人友好,不会出现「怎么永远是深色」的错觉。

快速上手:3 步找到你的热力图

  1. 部署 openGym:只需 Docker Compose 一条命令(docker compose up),详见 docs/SELF_HOSTING.md。
  2. 录入训练:完成任意一次训练记录,热力图当天即会点亮。也可以从 FitNotes、Strong、Hevy 一键导入历史数据,一次性填满一整年的格子。
  3. 打开统计页:底部导航进入Stats(统计),第一张卡片就是「Activity — last 12 months」年度训练热力图。

切换指标只需点一下卡片顶部的Time / Volume分段按钮,选择会持久保存(状态字段heatmapMetric,见 frontend/src/store/useStore.js)。

热力图交互细节:点一下方块会发生什么

这张图不是静态装饰,每个点亮的方块都可以点击:

  • 当天只练了一次→ 直接打开该次训练详情,逐组查看重量与次数;
  • 当天练了多次→ 打开当日日历视图,列出全部训练记录。

悬停(或长按)方块还会显示当天摘要:日期、训练次数、总分钟数、总训练量。

实现上,热力图聚合逻辑非常直观:按训练日期把每次训练的时长与重量累加,再取 25% / 50% / 75% 分位数划分色阶,核心代码见 frontend/src/components/Heatmap.jsx;它被嵌入统计页的渲染位置在 frontend/src/views/Stats.jsx。移动端横滑查看 52 周、默认滚动到最新一周,细节样式定义在 frontend/src/index.css。

热力图之外:统计页的「坚持三件套」

单看坚持天数还不够,openGym 在同一页面补齐了另外两个视角:

  • 🔥 连续周数(Week streak):顶部磁贴直接显示你已连续训练多少周——断档一眼可见,是催更利器;
  • 🏋 肌肉平衡图(Muscle balance):同一套 5 档色阶被复用为人体肌肉地图,按「练了多少 / 还在恢复 / 已退训」三种模式着色,回答「练得勤 ≠ 练得全」;
  • 📈 体重曲线:30 天、3 个月、1 年全历史可切换,配合目标线观察体脂期与增肌期。

这些视图共享同一套状态存储与历史计算模块(如 frontend/src/lib/history.js 的streakWeeks),所以数据永远互相一致。

数据归属:为什么热力图在你自己的服务器上

市面上很多健身 App 把训练数据锁在云端;openGym 的架构图显示,API 层(Node + WebAuthn)直接把数据写进你服务器上的./dataJSON 文件,热力图、连续周数、肌肉疲劳度全部由前端从这份数据本地计算——没有遥测、没有订阅,换设备时用 passkey 登录 + 一次性配对码即可无缝迁移。整体架构可参考 docs/diagrams/architecture.png,双端同步的合并策略见 docs/diagrams/sync.png。

小结:用一张图对抗训练倦怠

年度训练热力图的价值不在于「好看」,而在于把模糊的坚持变成可数、可比、可回看的方块:

  • 空档一目了然——哪几周掉链子了,比翻记录快得多;
  • 时间 / 体积双维度——坚持的「量」与「强度」分开看,避免只打卡不进步;
  • 点击穿透到单次训练——从全年视角一键下钻到某一天的每一组。

如果你也厌倦了把健身数据交给别人的服务器,openGym 的自托管方案 + 年度训练热力图,是把「我这一年练得怎么样」这个问题回答得最完整的方式之一。

更多文档可以从 docs/README.md 开始阅读,功能演进记录见 CHANGELOG.md。

【免费下载链接】openGymSelf-hosted gym & body-weight tracker — plan routines, log workouts (supersets, warm-ups, cardio), see which muscles are trained, fatigued or detrained, import from FitNotes/Strong/Hevy, passkey login. Your data, your server.项目地址: https://gitcode.com/GitHub_Trending/op/openGym

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/8 7:12:24

AI获客执行记录怎样可查?意客的日期筛选与分页设计

找客任务跑过,不等于销售已经拿到新机会 销售在意的是客户来源:这轮找客看了什么,哪里遇到问题,哪些材料值得继续核实。开发者还需要另一层信息:任务是否执行、发生了什么事件、怎样查到对应时段。把两层记录混在一起&…

作者头像 李华
网站建设 2026/10/8 7:11:46

给Claude装上长期记忆:claude-mem原理与实操指南

每次新开一个会话和Claude聊需求,都要把背景重新说一遍,这种感觉你是不是也特别熟悉。我前阵子调试一个状态机,上午刚和Claude把模块边界、命名规范、已知坑位全部对齐,下午新开一个窗口想让它接着上午的思路往下推,结…

作者头像 李华
网站建设 2026/10/8 7:10:52

C# + SQL Server 实现学生选课与成绩管理系统全方案

简介:这份源码包是一个基于C#与SQL Server数据库开发的学生选课及成绩查询管理系统,面向需要完成课程设计、毕业设计或希望学习桌面数据库应用开发的人群,可直接用来熟悉从界面设计、数据表创建到增删改查的完整流程。系统使用C#窗体作为前端…

作者头像 李华
网站建设 2026/10/8 7:10:47

从派拉蒙天舞1100亿美元收购华纳兄弟,看大客户销售的五力打法

据新华社报道,派拉蒙天舞公司10月6日宣布完成对华纳兄弟探索公司价值约1100亿美元的收购,这是美国传媒行业历史上规模最大的并购交易之一。 一、这起收购里藏着哪些大客户销售的影子 **先把事实钉住:**经过数月的竞购角逐以及法律拉锯战&…

作者头像 李华
网站建设 2026/10/8 7:10:10

开源 hostapd:路由器 Wi‑Fi 热点背后的守护进程

家里路由一开,手机就能搜到 SSID、输密码、连上网。页面上改个信道、开个访客网络,好像只是点了几下。可对做网关、刷 OpenWrt、啃 Wi‑Fi 驱动的人来说,真正在底层管着“谁能连、用什么加密、Beacon 怎么发”的,常常是用户态里一…

作者头像 李华