GlobalHub (中央 B2C 前台)
📋 基本資訊
- 專案路徑:
liongroup/liontech/lionglobal/b2c/globalhub - GitLab URL: https://gitlab.com/liongroup/liontech/lionglobal/b2c/globalhub`
- 專案類型: 前端應用 (Frontend Application)
- 定位: 中央層 - 全球化 B2C 旅遊產品展示前端
- 最後更新: 2026-02-07
📖 專案描述
GlobalHub 是 Lion Travel 中央層 (Central) 的 B2C 旅遊產品展示前端,提供多語言、多幣別的產品瀏覽與訂購功能。
架構定位
中央層 (Central)
├─ GlobalHub (本專案) ← 中央 B2C 前台
└─ GlobalHub API ← 中央匯入與分發服務
區域層 (Regions: TW, US, JP)
├─ ProductsAPI ← 區域產品服務
├─ ProductBackend ← 區域 CMS 管理
└─ 區域 B2C 前台
職責:
- 展示來自 GlobalHub API 的產品資料
- 提供中央站點的產品瀏覽與訂購
- 面向全球使用者(多語言、多幣別)
🏗️ 專案架構
目錄結構
globalhub/
├── src/
│ ├── app/ # Next.js App Router
│ │ ├── layout.tsx # 根佈局
│ │ ├── page.tsx # 首頁
│ │ ├── globals.css # 全域樣式
│ │ └── favicon.ico # 網站圖示
│ └── test/ # 測試檔案
│ ├── setup.ts # 測試環境設定
│ └── example.test.ts # 範例測試
├── public/ # 靜態資源
│ ├── globe.svg
│ ├── next.svg
│ ├── vercel.svg
│ ├── window.svg
│ └── file.svg
├── next.config.ts # Next.js 設定
├── package.json # 專案依賴
├── tsconfig.json # TypeScript 設定
├── vitest.config.ts # Vitest 測試設定
├── eslint.config.mjs # ESLint 設定
├── postcss.config.mjs # PostCSS 設定
├── Dockerfile # Docker 容器化設定
├── .gitlab-ci.yml # GitLab CI/CD 設定
└── README.md # 專案說明
技術棧詳細
核心框架
- Next.js 16.1.1 - React 框架,支援 Server-Side Rendering (SSR) 與 Static Site Generation (SSG)
- React 19.2.3 - UI 函式庫
開發工具
- TypeScript 5 - 型別安全
- Tailwind CSS 4 - 實用優先的 CSS 框架
- Vitest 4.0.16 - 單元測試框架
- Testing Library - React 元件測試
- ESLint 9 - 程式碼品質檢查
CI/CD
- Docker - 容器化部署
- GitLab CI - 自動化建置與部署
🔌 API 整合
GlobalHub 作為中央層前端,主要整合以下後端服務:
主要整合
| 服務 | 層級 | 用途 |
|---|---|---|
| GlobalHub API | 中央 | 產品資料展示 |
預期端點
- 產品列表查詢
- 產品詳情查看
- 購物車管理
- 訂單建立
🚀 開發指南
環境需求
- Node.js: v22 (根據 Dockerfile)
- npm: 隨 Node.js 安裝
本地開發
-
安裝依賴
npm ci -
啟動開發伺服器
npm run dev開啟瀏覽器訪問
http://localhost:3000 -
執行測試
npm test -
測試覆蓋率
npm run test:coverage -
程式碼檢查
npm run lint
建置生產版本
npm run build
npm start
Docker 部署
建置映像檔
docker build -t globalhub:latest .
執行容器
docker run -d -p 3000:3000 --name globalhub globalhub:latest
健康檢查
- 容器內建健康檢查:每 30 秒檢查
http://localhost:3000/ - 失敗重試 3 次後標記為不健康
📦 Docker 配置
Multi-stage Build
Dockerfile 採用兩階段建置:
-
Builder Stage (node:22-alpine)
- 安裝依賴
- 建置應用程式
-
Runner Stage (node:22-alpine)
- 僅複製建置產物
- 建立 non-root 使用者 (nextjs)
- 執行生產伺服器
環境變數
NODE_ENV=productionPORT=3000HOSTNAME=0.0.0.0
安全性
- 使用 non-root 使用者 (uid: 1001, gid: 1001)
- 最小化映像檔大小 (Alpine Linux)
🧪 測試
- 測試框架: Vitest
- 元件測試: @testing-library/react
- 瀏覽器環境: jsdom
測試檔案位於 src/test/ 目錄。
🔗 相關專案
中央層專案
| 專案 | 關係 | 說明 |
|---|---|---|
| globalhubapi | 後端 API (中央) | 中央匯入與分發服務 |
區域層專案
| 專案 | 關係 | 說明 |
|---|---|---|
| productsapi | 產品服務 (區域) | 區域產品搜尋、訂單管理 |
| productbackend | 後台管理 (區域) | 區域產品內容管理系統 |
📊 CI/CD 流程
GitLab CI 自動化流程(.gitlab-ci.yml):
- Build - 建置 Docker 映像檔
- Test - 執行單元測試與覆蓋率檢查
- Deploy - 部署到目標環境
📝 重要文件
| 檔案 | 說明 |
|---|---|
next.config.ts | Next.js 配置(輸出模式、最佳化等) |
tsconfig.json | TypeScript 編譯器設定 |
vitest.config.ts | 測試設定與覆蓋率門檻 |
.gitlab-ci.yml | CI/CD 流程定義 |
Dockerfile | 容器化建置指令 |
🎨 設計模式
- App Router - Next.js 14+ 的新路由系統
- Server Components - 預設使用 React Server Components
- File-based Routing - 基於檔案系統的路由
📈 效能優化
- Static Generation - 靜態生成提升載入速度
- Standalone Output - 最小化部署大小
- Image Optimization - Next.js 自動圖片最佳化
- Code Splitting - 自動程式碼分割
🔐 品質保證
- TypeScript - 型別安全
- ESLint - 程式碼風格與潛在問題檢查
- Vitest - 單元測試覆蓋率
- GitLab CI - 自動化測試與建置
🌐 多語言支援
前端應用預期支援多語言(需整合 i18n 函式庫),與 GlobalHub API 的多語言資料配合使用。
💰 多幣別支援
透過整合 GlobalHub API 的多幣別價格功能,提供動態價格顯示。
🌍 與區域站點的關係
- GlobalHub = 中央站點前台
- 區域 B2C 前台 = 各區域獨立的消費者網站 (TW/US/JP)
- 數據來源: 中央站點的數據來自 GlobalHub API(已從 SERP 匯入)
- 獨立性: 中央站點與區域站點各自獨立運營