科学工具
科学工具让世界更美好
让世界更美好

全栈健身管理平台Workout.cool,提供训练计划创建、进度追踪和全面的运动数据库全栈健身管理平台Workout.cool,提供训练计划创建、进度追踪和全面的运动数据库

Workout.cool是一个健身教练平台,能创建健身计划、追踪进度,能访问庞大的锻炼数据库,里面有详细的操作说明和视频演示。

Workout.cool采用现代技术栈(Next.js + PostgreSQL),支持多语言、视频指导。

训练计划定制:可视化创建个性化健身计划、支持按肌群、器械类型筛选动作。

进度追踪:记录训练组数/次数/负重、生成历史数据图表。

运动数据库:包含 200+ 带视频演示的动作、多语言支持、动作属性筛选(类型、主肌肉群等)。

安装和部署

安装环境要求:Node.js(v18+),pnpm(v8+),Docker

安装步骤

克隆仓库

git clone https://github.com/Snouzy/workout-cool.git
cd workout-cool

选择安装方式:

用Docker安装

复制环境变量

cp .env.example .env

启动所有开发服务:

make dev

这会在Docker中启动数据库、运行迁移、填充数据库,然后启动Next.js开发服务器。

停止服务可以运行make down

打开浏览器,访问http://localhost:3000

不用Docker安装

手动安装

安装依赖

pnpm install

复制环境变量

cp .env.example .env

设置PostgreSQL数据库

如果本地没有,先安装PostgreSQL

创建名为workout_cool的数据库:createdb -h localhost -p 5432 -U postgres workout_cool

运行数据库迁移

npx prisma migrate dev

填充数据库(可选)

查看“锻炼数据库导入”部分

启动开发服务器

pnpm dev

打开浏览器,访问http://localhost:3000

锻炼数据库导入

项目包含一个全面的锻炼数据库。要导入锻炼样本:

导入前置条件

准备CSV文件

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

可以使用提供的示例。

导入命令

# 从CSV文件导入锻炼数据
pnpm run import:exercises-full /path/to/your/exercises.csv

# 使用提供的样本数据的示例
pnpm run import:exercises-full ./data/sample-exercises.csv

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","<p>Stand upright...</p>","<p>Stand upright...</p>",https://youtube.com/...,https://img.youtube.com/...,slug-fr,slug-en,TYPE,STRENGTH
157,"Fentes arrières à la barre","Barbell Reverse Lunges","<p>Stand upright...</p>","<p>Stand upright...</p>",https://youtube.com/...,https://img.youtube.com/...,slug-fr,slug-en,PRIMARY_MUSCLE,QUADRICEPS

想在本地开发时获得无限的锻炼数据?

可以用./scripts/import-exercises-with-attributes.prompt.md中的提示词问chatGPT。

部署/自托管

要在数据库中填充样本锻炼数据,把SEED_SAMPLE_DATA环境变量设为true

使用Docker

# 构建Docker镜像
docker build -t yourusername/workout-cool .

# 运行容器
docker run -p 3000:3000 --env-file .env.production yourusername/workout-cool

使用Docker Compose

DATABASE_URL

host改成指向postgres服务,而不是localhost

DATABASE_URL=postgresql://username:password@postgres:5432/workout_cool
docker compose up -d

手动部署

# 构建应用
pnpm build

# 运行数据库迁移
export DATABASE_URL="your-production-db-url"
npx prisma migrate deploy

# 启动生产服务器
pnpm start