自托管健身平台 Workout.cool:训练计划、进度追踪、动作库一站搞定(附部署实测)

发布时间:2026/11/3 2:24:51

自托管健身平台 Workout.cool:训练计划、进度追踪、动作库一站搞定(附部署实测) 想找一个能自己部署、数据自己能掌控的健身管理工具结果翻到了这个项目。我最近在找一个能自己跑的健身管理平台。需求其实挺朴素的能写训练计划能记录每次练了什么最好还能直接看动作视频。但一圈看下来要么是商用 App 把数据锁在云端、订阅越来越贵要么是一些小工具做着做着就停了数据导入导出都费劲。后来翻到Workout.cool。它是原workout.lol项目的主要贡献者 Snouzy 在原项目被转手、新 owner 也停止维护之后重新做的一套开源健身平台。目前 GitHub 上8.5k star、753 fork最新 release 是v1.3.2最近一次代码提交是 2026 年 9 月 20 日——至少在维护状态上这个项目还活着。它到底能干什么一句话概括Workout.cool 是一个用 Next.js TypeScript Prisma PostgreSQL 写的健身教练平台可以部署在你自己的服务器上。核心就三块对应健身场景里最常用的需求训练计划像排课表一样安排每周练什么。动作数据库自带大量动作能看视频、看说明、看目标肌群。进度追踪记录每次训练的重量、组数、次数生成趋势图。Next.jsReact 的全栈框架一个项目里既能写页面也能写后端接口。Prisma一种 ORM对象关系映射把数据库表当成 TypeScript 对象来操作不用手写太多 SQL。PostgreSQL开源的关系型数据库这里用来存动作、计划、训练记录。我为什么愿意把它下载下来试试自托管数据放在自己机器上不用担心厂商突然改订阅或关停服务。开源 MIT商用也没问题想二次开发直接改。动作库带视频这是很多开源健身工具没有的部分。多语言界面支持中文、英文、日文、韩文、法文、德文、西班牙文、葡萄牙文、俄文等。Docker 一键跑对不想一步步配环境的人来说很友好。本地跑起来需要多久我按 README 的 Docker 方式试了一遍十几分钟就能看到界面。# 1. 克隆项目 git clone https://github.com/Snouzy/workout-cool.git cd workout-cool # 2. 复制环境变量 cp .env.example .env # 3. 启动开发环境 make devmake dev这一条命令背后会自动做几件事启动 PostgreSQL 容器、跑数据库迁移、塞入种子数据、启动 Next.js 开发服务。完事后打开http://localhost:3000就能看到界面比自己手动装库、配数据库省不少事。# 停止服务 make down三个核心功能拆开看1. 训练计划编排逻辑上很像给自己排一张“健身课表”选周几练、每次练哪个部位、每个动作做几组几次。项目支持多天计划也支持循环计划比如一个计划重复 4 周还提供了一些模板可以直接从模板改起。2. 动作数据库这是我觉得最实用的一块。市面上很多开源健身工具的动作库只有文字列表Workout.cool 的动作条目却更像视频卡片有名称、说明、主要肌群、动作类型还有视频演示链接。你搜“深蹲”这类动作出来的是带视频入口的结果而不是一行干巴巴的文字。动作数据还能用 CSV 批量导入。项目里自带了一个示例文件data/sample-exercises.csv格式大概长这样id,name,name_en,description,description_en,full_video_url,full_video_image_url,introduction,introduction_en,slug,slug_en,attribute_name,attribute_value 157,Fentes arrières à la barre,Barbell Reverse Lunges,pStand upright.../p,pStand upright.../p,https://youtube.com/...,https://img.youtube.com/...,slug-fr,slug-en,TYPE,STRENGTH 157,Fentes arrières à la barre,Barbell Reverse Lunges,pStand upright.../p,pStand upright.../p,https://youtube.com/...,https://img.youtube.com/...,slug-fr,slug-en,PRIMARY_MUSCLE,QUADRICEPS导入命令pnpm run import:exercises-full ./data/sample-exercises.csv也就是说如果你有自己的动作数据整理成这种 CSV 就能一次性灌进数据库。3. 进度追踪每次训练完把重量、次数、组数记下来系统会帮你画趋势图。长期看就像给自己建了一本带图表的训练日记而不是在备忘录里写一堆零散数字。代码结构长什么样项目用了Feature-Sliced DesignFSD来组织代码。简单理解就是不按“页面、组件、工具”这种文件类型来分而是按“功能”来切。FSD一种前端架构方法论把代码分成 shared、entities、features、widgets、app 等层级业务功能之间边界更清晰。目录大概长这样src/ ├── app/ # Next.js 页面与路由 ├── processes/ # 跨功能业务流程 ├── widgets/ # 可组合 UI 组件比如 Sidebar、Header ├── features/ # 业务功能认证、动作管理、训练计划 ├── entities/ # 领域实体用户、动作、训练计划 ├── shared/ # 通用代码UI 组件、工具函数、类型 └── styles/ # 全局样式这种分层对中大型 Next.js 项目比较友好改某个功能时相关的 UI、状态、API 调用基本都集中在同一层不用满世界找文件。不想用 Docker 也可以手动跑如果你本地已经有 PostgreSQL手动跑也很快# 安装依赖 pnpm install # 复制环境变量 cp .env.example .env # 创建数据库 createdb -h localhost -p 5432 -U postgres workout_cool # 跑迁移 npx prisma migrate dev # 启动开发服务器 pnpm dev生产环境部署# 构建 pnpm build # 设置生产数据库地址并跑迁移 export DATABASE_URLyour-production-db-url npx prisma migrate deploy # 启动生产服务 pnpm start和同类工具比比看对比项Workout.cool商业健身 App简单记录工具开源MIT完全开源闭源部分开源自托管支持 Docker 一键部署仅云端不一定功能完整计划 追踪 数据库功能丰富通常单一多语言支持 8 语言视产品而定常仅英文数据控制自己掌控在厂商服务器不一定可定制可二次开发无法定制视项目而定成本免费订阅制免费这个对比不是想说商业 App 一无是处而是给“想自己掌控数据、愿意折腾一下”的人一个选项。如果你只是临时记几次训练备忘录可能更快但如果你想长期管理训练数据Workout.cool 的完整度会舒服很多。适合哪些人健身爱好者想自己写计划、追踪力量/耐力变化。健身教练给学员排训练计划学员记录完成情况后能看进度。开发者想基于健身场景做二次开发或者学习 Next.js FSD Prisma 的组合。团队/组织希望内部自托管保护用户数据隐私。几个我用下来的小体会Docker 模式确实省事make dev把数据库、迁移、种子、Next.js 一起拉起来适合想快速看效果的人。动作库是亮点有视频链接和肌群标注比自己维护一个 Excel 表强。CSV 导入很实在如果你已经有一份动作清单灌进去的难度不大。FSD 架构有学习价值代码不是乱堆在components/里而是按业务领域分好了层。相关资源GitHubhttps://github.com/Snouzy/workout-cool官网https://workout.cool文档README、Contributing Guide、Self-hosting Guide名词速查表名词一句话解释Next.jsReact 全栈框架App Router 能同时做页面和接口。Prisma类型安全的 ORM把数据库表映射成 TypeScript 对象。PostgreSQL开源关系型数据库。FSD按功能切片组织代码的前端架构方法。Better Auth项目里用的认证库支持邮箱、OAuth 等登录方式。Docker Compose多容器编排工具这里用来一次启动数据库和 Next.js 服务。写在最后如果你正好想搭一个自己的健身数据系统或者厌倦了把训练记录交给商业 AppWorkout.cool 是个值得git clone下来试试的项目。它对“点开即用”型用户不算最友好但对愿意自己部署、甚至二次开发的人来说这套代码的底子不错功能也完整。我从 README 和社区反馈来看作者一直在持续更新。如果你跑通了也可以顺手给项目点个 star或者把遇到的问题提到 GitHub Issues 里。
延伸阅读

更多相关文章

2026/11/3 2:19:51

理解 GC Roots:对象为什么不能被回收

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/3 3:19:54

智能K歌推荐系统:基于用户画像的个性化点歌方案

1. 项目背景与核心价值作为一个每周组织朋友K歌聚会的资深麦霸,我深刻体会到选歌环节的尴尬——有人偏爱抒情慢歌,有人热衷摇滚嗨曲,还有朋友只唱特定年代的经典老歌。每次点歌单都要反复询问每个人的偏好,既浪费时间又容易冷场。…

2026/11/3 3:19:54

Minecraft整合包联机全攻略:局域网、端口映射与虚拟组网

整合包联机这件事,翻车概率基本和整合包的体量成正比。原版十几个人开个房间,可能连端口都不用管;换成塞了两百个模组的整合包,同一套操作就变成了“能进主菜单、能选世界、卡在加载地形”的经典现场。这几年我帮朋友、帮社区里的…

2026/11/3 3:19:54

Asp.Net数据库主从分离实战:提升性能3-5倍

1. 项目概述作为一名长期奋战在Asp.Net开发一线的老手,我见过太多因为数据库性能问题而崩溃的网站。当你的应用日访问量突破10万时,单数据库架构就像独木桥上的大象——随时可能压垮整个系统。主从复制(Master-Slave Replication)…

2026/11/3 3:19:54

力扣611题:有效三角形个数的双指针解法与优化

1. 问题背景与核心挑战今天我们来拆解力扣(LeetCode)第611题"有效三角形的个数"。这是一道中等难度的算法题,但其中蕴含的解题思路和优化技巧非常值得深入探讨。题目要求给定一个包含非负整数的数组nums,返回可以组成三…

2026/11/3 3:19:54

面向对象编程:现代开发的核心原则与实践

1. 为什么面向对象编程依然是现代开发的基石十五年前我刚入行时,第一次接触面向对象编程(OOP)就像打开了新世界的大门。当时有位资深工程师对我说:"如果你只能用一把锤子解决所有问题,那说明你还没真正理解工具的价值。"这句话放在…

2026/11/3 3:14:54

离散数学期末复习指南:集合论、关系、图论与代数结构考点

简介:面向计算机及相关专业学生的离散数学期末复习资料,围绕期末考试常见题型与核心考点编排,适合考前系统梳理、对照练习和查漏补缺。压缩包共1个PDF文件,大小约1.13MB,内容以试题、参考答案和解析为主,便…

2026/11/2 6:08:01

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/2 6:39:12

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/3 1:04:48

STM32实战:基于MAX14431数字隔离器的SPI隔离通信方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/3 1:04:48

工业SPI隔离通信设计:MAX14431BAEE+与STM32L4A6RG实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/3 1:04:48

STM32+NRF24L01无线抢答器:硬件设计、通信协议与低功耗实现

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/2 6:08:01

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/2 6:39:12

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑