feat:實作 Member Portal MVP 前端與後端整合

後端:
- 新增 DivingOffer Model / DivingOfferController(列表+詳情 API,支援搜尋/篩選/分頁)
- 修正 Google OAuth callback 改為 redirect 至前端(SocialAuthController)
- 新增 config/cors.php 允許前端 origin
- .gitignore 新增 frontend/ 排除規則

前端(frontend/):
- Vue 3 + Vite + Tailwind CSS + Pinia + Vue Router
- 頁面:首頁、課程列表、課程詳情、登入、註冊、個人資料、OAuth callback
- 整合至 Docker(multi-stage build,nginx 靜態服務於 port 5173)

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-05-10 01:41:28 +08:00
parent 725c86f434
commit 550e2fc97a
48 changed files with 5887 additions and 17 deletions
@@ -0,0 +1,32 @@
## Why
CFDivePlatform 後端 API 已具備會員認證與基礎資料管理能力,但目前缺乏任何前端介面,使用者無法透過瀏覽器使用平台。建立獨立的會員端前端 MVP,讓潛水愛好者能瀏覽、搜尋課程,是平台從「有 API」走向「可用產品」的第一步。
## What Changes
- **新建獨立前端 repo**Vue 3 + Vite + Tailwind CSS),與此 Laravel repo 分開部署
- **後端新增 Diving Offers 公開 API**:課程列表(含搜尋/篩選)與課程詳情兩支 endpoint
- 前端實作六個頁面:首頁、課程列表、課程詳情、登入、註冊、會員個人資料
- 前端整合現有 Auth APISanctum token)與 Google OAuth redirect 流程
## Capabilities
### New Capabilities
- `diving-offers-api`:後端提供公開的潛水課程列表與詳情 API,支援關鍵字搜尋、地區與標籤篩選
- `member-portal-ui`:獨立前端應用,包含課程瀏覽、認證流程、會員個人資料等完整使用者介面
### Modified Capabilities
(無)
## Impact
**後端(此 Laravel repo**
- 新增 `DivingOfferController` 與兩條 API 路由
- `diving_offers` 資料表已存在,僅需新增 Model fillable 與 Controller
**前端(新 repo**
- 獨立 Vue 3 repo,需另行建立專案結構
- 依賴後端 API base URL(透過 `.env` 設定)
- CORS 需在 Laravel 端設定允許前端 origin