一个功能完整的健身社交与教练预约平台,支持微信登录、课程预约、社交互动等功能。
- 🔐 多种登录方式:微信登录、手机号登录
- 👤 完善的个人资料管理
- 🏋️ 浏览和购买健身课程
- 📅 课程日历与行程管理
- ⭐ 课后评价系统
- 📝 创建和管理个人档案
- 📸 上传个人照片和资质证明
- 📍 设置所在城市和服务范围
- 💰 创建和定价课程
- 📊 查看学员评价和统计数据
- 📱 发布健身动态(文字、图片、视频)
- 👍 点赞、评论、分享
- 👥 关注好友和教练
- 💬 私信聊天
- 💳 支持微信支付
- 💰 支持支付宝
- 🏦 支持银行卡支付
- 🔄 订单管理和退款
- 框架: NestJS + TypeScript
- 数据库: PostgreSQL
- ORM: TypeORM
- 缓存: Redis
- 认证: JWT + Passport
- 文件存储: 阿里云OSS
- 框架: React Native
- 状态管理: Redux Toolkit
- UI组件: React Native Paper
- 导航: React Navigation
- 容器化: Docker + Docker Compose
- 版本控制: Git
- API文档: Swagger (计划)
- Node.js >= 18
- PostgreSQL >= 15
- Redis >= 7
- Docker (可选)
- 克隆项目
git clone <repository-url> cd workoutPlan
- 配置环境变量
cd backend cp .env.example .env # 编辑 .env 文件,填入必要的配置
- 启动所有服务
docker-compose up -d
- 访问服务
- 后端API: http://localhost:3000
- pgAdmin: http://localhost:5050 (admin@workout.com / admin)
- 安装依赖
cd backend
npm install- 启动 PostgreSQL 和 Redis
# 使用 Docker 启动数据库和缓存
docker-compose up -d postgres redis- 运行数据库迁移
npm run migration:run
- 启动开发服务器
npm run start:dev
workoutPlan/
├── backend/ # 后端项目
│ ├── src/
│ │ ├── modules/ # 业务模块
│ │ │ ├── user/ # 用户模块
│ │ │ ├── auth/ # 认证模块
│ │ │ ├── coach/ # 教练模块
│ │ │ ├── course/ # 课程模块
│ │ │ ├── payment/ # 支付模块
│ │ │ ├── social/ # 社交模块
│ │ │ └── calendar/ # 日历模块
│ │ ├── common/ # 公共组件
│ │ ├── config/ # 配置文件
│ │ ├── app.module.ts # 应用主模块
│ │ └── main.ts # 应用入口
│ ├── .env # 环境变量
│ ├── package.json # 依赖配置
│ └── tsconfig.json # TS配置
├── frontend/ # 前端项目(待开发)
├── database/ # 数据库脚本
│ └── init.sql # 初始化脚本
├── docs/ # 文档
├── docker-compose.yml # Docker编排
└── README.md # 项目说明
users- 用户表coach_profiles- 教练档案表courses- 课程表orders- 订单表schedules- 行程表reviews- 评价表posts- 帖子表likes- 点赞表follows- 关注表comments- 评论表
启动服务后访问: http://localhost:3000/api (计划添加 Swagger)
- 项目初始化
- 数据库设计
- 基础架构搭建
- Docker 配置
- 用户认证模块
- 教练管理模块
- 课程管理模块
- 支付集成
- 社交功能
- 日历系统
- 文件上传
- 消息推送
- 移动端开发
- 性能优化
- 测试完善
- 生产部署
查看 backend/.env.example 文件获取完整的环境变量列表。
主要配置项:
DB_*- 数据库配置JWT_*- JWT认证配置WECHAT_*- 微信相关配置ALIPAY_*- 支付宝配置OSS_*- 文件存储配置
欢迎提交 Issue 和 Pull Request!
MIT License
如有问题,请提交 Issue 或联系开发团队。