首页/新闻资讯/正文详情

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

发布时间:2026/11/3 2:25:23 来源:云帆数科 栏目:资讯中心
自托管健身平台 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 里。

相关推荐

AI智能体自我进化实战课-第11章第1节-搜索与规划实战-实战蒙特卡洛树搜索Agent让Agent学会下棋式思考
AI智能体自我进化实战课-第11章第1节-搜索与规划实战-实战蒙特卡洛树搜索Agent让Agent学会下棋式思考

实战:蒙特卡洛树搜索Agent——让Agent学会下棋式思考 给 [1, 5, 5, 1] 四个数,用加减乘除凑 24。你第一反应大概是瞎试,试到头疼。但如果让 Agent 像 AlphaGo 那样"下棋式思考"——先大胆探索、再回头评估、用胜率引导下一步——它… · 2026/11/3 2:25:23

Graph-Engineering-第17章第80节-从Trace到性能优化-Graph调试实战与瓶颈定位
Graph-Engineering-第17章第80节-从Trace到性能优化-Graph调试实战与瓶颈定位

从Trace到性能优化:Graph调试实战与瓶颈定位 上一节装好了X光机,这一节拿真实的"病片"练手:慢节点怎么锁定、token浪费怎么抓、重试风暴怎么发现,以及三大瓶颈模式的检测签名与修复账单 本文导航 调试SOP:四… · 2026/11/3 2:25:23

AI智能体自我进化实战课-第11章第2节-搜索与规划实战-实战Plan-and-Execute规划执行分离
AI智能体自我进化实战课-第11章第2节-搜索与规划实战-实战Plan-and-Execute规划执行分离

实战:Plan-and-Execute规划执行分离 让一个 Agent 同时"想怎么做"和"动手去做",就像让一个人一边画地图一边赶路——大概率走弯路。这一篇把"规划"和"执行"拆成两个独立角色:规划器先画步骤清单&… · 2026/11/3 2:25:23

一个 4B 小模型被玩出了三条路:一句话生成 3D 世界,还能去给自动驾驶当“眼睛”
一个 4B 小模型被玩出了三条路:一句话生成 3D 世界,还能去给自动驾驶当“眼睛”

一个 4B 小模型被玩出了三条路:一句话生成 3D 世界,还能去给自动驾驶当“眼睛” 最近科技圈有个挺有意思的现象:同一款“4B”体量的小模型,被不同团队拉去干了完全不相干的三件事。 一支人马拉它去做 3D 场景,你打一句… · 2026/11/3 2:51:28

大模型能替你写研究局限吗:能力边界与自查
大模型能替你写研究局限吗:能力边界与自查

把「研究局限」这一节交给大模型,拿回来的往往是一段读起来很顺、放进哪篇论文都不违和的文字。它能不能直接用,不取决于文笔,而取决于你手里有没有一把尺子去量它。下面说清三件事:能力边界在哪、五类缺陷怎么识别与改写、哪些句… · 2026/11/3 2:51:28

实验研究的内部效度威胁:单组前后测为什么排除不掉
实验研究的内部效度威胁:单组前后测为什么排除不掉

实验做完了,评审意见只有一句:怎么证明这个变化不是你自己的测量造成的。这类质疑很少指向统计方法,它指向内部效度——观测到的差异能否归因于处理。单组前后测在这一点上先天吃亏:一个组、两个时点,五项威胁同时敞口… · 2026/11/3 2:51:28

论文的抽样框怎么定:从目标总体到可操作名单
论文的抽样框怎么定:从目标总体到可操作名单

抽样框不是一张表,而是一条从"想研究谁"收窄到"明天能打给谁"的链路。论文里写"随机抽样"却拿不出带编号、带准入判据、带联系路径的名单,一问"框从哪来"就卡住。下面拆五级,每级一问、一样交付物&a… · 2026/11/3 2:51:28

ASan(AddressSanitizer)内存错误检测工具详讲
ASan(AddressSanitizer)内存错误检测工具详讲

一、ASan 是什么ASan 全称 AddressSanitizer,通常称为地址消毒器,是一种运行时内存错误检测工具。主要用于检测 C/C 程序中的非法内存访问问题。它通过编译器插桩(Instrumentation)和运行时库(Runtime Library&#xf… · 2026/11/3 2:51:28

《读懂 Token》省 Token 的 12 个实操开关:不改模型,账单直降 80% —— Cursor 单飞一篇
《读懂 Token》省 Token 的 12 个实操开关:不改模型,账单直降 80% —— Cursor 单飞一篇

省 Token 的 12 个实操开关:不改模型,账单直降 80%——Cursor 单飞一篇 8 个最实用的开关全部打开,单次请求从 12,000 Token 压到 ~1,200,账单打一折。 Token 系列 第 5 篇 为什么专门写一篇 Cursor 第二篇讲过 12 个省 Token 的… · 2026/11/3 2:50:28

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* 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 13:10:28

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* 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 4:42:45

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* 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 5:17:18

STM32F411RE与MAX14431实现SPI隔离:工业现场抗共模干扰实战
STM32F411RE与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:01:59

ESP32+大模型AI硬件开发:从Demo到产品的8个工程问题
ESP32+大模型AI硬件开发:从Demo到产品的8个工程问题

/* 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:01:59

基于MAX14431BAEE+与PIC18F85J10的SPI隔离方案设计与实践
基于MAX14431BAEE+与PIC18F85J10的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:01:59

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* 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 13:10:28

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* 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 4:42:45

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* 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 5:17:18

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码