基于碳循环原理的100天减脂挑战社交打卡应用,使用 Vue 3 + NestJS + MongoDB 全栈技术栈开发。
CarbonCycle100 帮助用户通过科学碳循环饮食法进行减脂挑战,提供每日打卡记录、社区分享、进度统计等功能。
- 用户注册/登录 - JWT 认证
- 每日打卡(低碳/高碳状态 + 饮食/运动记录)
- 查看个人打卡日历与统计数据
- 浏览社区动态(所有用户的打卡分享)
- 100天挑战进度追踪
- NestJS ^10.0
- MongoDB + Mongoose ^8.0
- JWT ^10.0
- Passport JWT
- bcrypt 密码加密
- Swagger API 文档
- Class-validator DTO 验证
- Throttler 接口限流
- Vue 3 ^3.4 + TypeScript ^5.0
- Vite ^5.0
- Vue Router
- Pinia 状态管理
- Element Plus UI
- Tailwind CSS
- GSAP 动画
- Chart.js 数据可视化
- Axios HTTP 客户端
carbon-cycle-100/
├── backend/ # NestJS 后端
│ ├── src/
│ │ ├── modules/
│ │ │ ├── auth/ # 认证模块
│ │ │ ├── users/ # 用户模块
│ │ │ ├── checkin/ # 打卡模块
│ │ │ └── community/ # 社区模块
│ │ ├── app.module.ts
│ │ └── main.ts
│ ├── package.json
│ └── .env.example
│
└── frontend/ # Vue 3 前端
├── src/
│ ├── api/ # API 接口
│ ├── components/ # 公共组件
│ ├── router/ # 路由配置
│ ├── stores/ # Pinia 状态管理
│ ├── types/ # TypeScript 类型
│ ├── views/ # 页面组件
│ ├── App.vue
│ └── main.ts
├── package.json
├── vite.config.ts
└── .env.example
- Node.js ^18.0
- MongoDB ^7.0
- npm 或 yarn
git clone <repository-url>
cd carbon-cycle-100cd backend
npm install复制 .env.example 为 .env 并修改配置:
cp .env.example .env默认配置:
MONGODB_URI=mongodb://localhost:27017/carboncycle100
JWT_SECRET=your-secret-key
JWT_EXPIRES_IN=7d
PORT=3000npm run start:dev后端将在 http://localhost:3000 运行,API 文档:http://localhost:3000/api-docs
cd ../frontend
npm install复制 .env.example 为 .env:
cp .env.example .envnpm run dev前端将在 http://localhost:5173 运行
| 方法 | 路径 | 描述 |
|---|---|---|
| POST | /auth/register | 用户注册 |
| POST | /auth/login | 用户登录 |
| 方法 | 路径 | 描述 | 认证 |
|---|---|---|---|
| GET | /users/profile | 获取当前用户信息 | 是 |
| PATCH | /users/profile | 更新用户信息 | 是 |
| 方法 | 路径 | 描述 | 认证 |
|---|---|---|---|
| POST | /checkin | 每日打卡 | 是 |
| GET | /checkin/today | 获取今日打卡 | 是 |
| GET | /checkin/calendar | 获取日历打卡记录 | 是 |
| GET | /checkin/stats | 获取打卡统计数据 | 是 |
| GET | /checkin/history | 获取打卡历史 | 是 |
| 方法 | 路径 | 描述 | 认证 |
|---|---|---|---|
| GET | /community/posts | 获取社区动态列表 | 否 |
| POST | /community/posts | 发布动态 | 是 |
| POST | /community/posts/:id/like | 点赞/取消点赞 | 是 |
- 低碳日:减少碳水化合物摄入(20-50g),促进脂肪燃烧
- 高碳日:增加碳水化合物摄入(150-200g),补充肌糖原
- 选择当日状态(低碳/高碳)
- 记录饮食内容
- 记录运动情况
- 填写体重(可选)
- 记录当日感受
- 100天为完整挑战周期
- 建议低碳-高碳交替进行
- 每日打卡记录饮食和运动
- 社区分享心得互相鼓励
- 代码使用 2 空格缩进
- 变量命名使用 camelCase
- 组件命名使用 PascalCase
- CSS 类名使用 kebab-case
- 使用 TypeScript 严格模式
MIT