---
# System prepended metadata

title: 第十四堂：實作一個線上健身平台
tags: [2025 Node.js 後端工程師培訓營]

---

## 後端 roadmap
- API 應用可參考[線稿圖](https://miro.com/app/board/uXjVLbiDml0=/)
- API 開發規格請依照 [此 API 文件](https://liberating-turtle-5a2.notion.site/38e4dd6775894e94a8f575f20ca5b867?v=17c6a246851881208205000cacf67220)
- db 欄位設計請依照 [此資料庫欄位圖片](https://firebasestorage.googleapis.com/v0/b/hexschool-courses.appspot.com/o/hex-website%2Fnode%2F1739179853094-fitness_5.png?alt=media&token=a65de209-3ae6-4263-bdc0-d4f08638ff20) 定義
- [課程 Repo](https://github.com/hexschool/node-training-postgresql)
* [後端 Back-end 路線圖](https://github.com/goodjack/developer-roadmap-chinese#%E5%BE%8C%E7%AB%AF-back-end-%E8%B7%AF%E7%B7%9A%E5%9C%96)


## express 推薦架構
* [node-express-boilerplate](https://github.com/hagopj13/node-express-boilerplate)


## 開發流程

## API 列表 ([postman 參考](https://drive.google.com/file/d/1feC3cFBRbpYsX5V2oNyYn6l2ORq4UYiZ/view?usp=sharing))

### 會員功能(users)
1. [POST] 註冊會員：`{url}/api/users/signup`
2. [POST] 登入會員：`{url}/api/users/login`
3. [GET] 取得個人資料：`{url}/api/users/profile`
4. [PUT] 編輯個人資料：`{url}/api/users/profile`
5. [GET] 取得使用者已購買的方案列表：`{url}/api/users/credit-package`
6. [PUT] 使用者更新密碼：`{url}/api/users/password`
7. [GET] 取得已預約的課程列表：`{url}/api/users/courses`


---

### 教練專長 (skills)
1. [POST] 新增技能列表：`{url}/api/coaches/skill`
2. [GET] 取得技能列表：`{url}/api/coaches/skill`
3. [DELETE] 刪除教練專長：`{url}/api/coaches/skill/{id}`

---

### 購買方案 (credit-package)
1. [POST] 新增購買方案：`{url}/api/credit-package`
2. [GET] 取得購買方案：`{url}/api/credit-package`
3. [DELETE] 刪除購買方案：`{url}/api/credit-package`
4. [POST] 使用者購買方案：`{url}/api/credit-package/:creditPackageId`

---

### 教練 (coaches)
1. [GET] 取得教練列表：`{url}/api/coaches?per=10&page=1`
2. [GET] 取得教練詳細資料：`{url}/api/coaches/:coachId`
3. [GET] 取得指定教練課程列表：`{url}/api/coaches/:coachId/courses`


---

### 管理員 (admin)
1. [POST] 變更教練權限：`{url}/api/admin/coaches/:userId`
2. [POST] 新增教練課程：`{url}/api/admin/coaches/courses`
3. [GET] 取得教練自己的課程列表：`{url}/api/admin/coaches/courses`
4. [PUT] 變更教練資料：`{url}/api/admin/coaches`
5. [GET] 取得教練自己的課程詳細資料：`{url}/api/admin/coaches/courses/:courseId`
6. [GET] 取得教練自己的詳細資料：`{url}/api/admin/coaches`
7. [GET] 取得教練自己的月營收資料：`{url}/api/admin/coaches/revenue?month=january`

---

### 課程 (courses)
1. [GET] 取得課程列表：`{url}/api/courses`
2. [POST] 報名課程：`{url}/api/courses/:courseId`
3. [DELETE] 取消課程：`{url}/api/courses/:courseId`

---

### 圖片上傳 (upload)
1. [POST] 上傳圖片：`{url}/api/upload`