181 lines
4.4 KiB
Markdown
181 lines
4.4 KiB
Markdown
# Drama Ling - 專案架構
|
||
|
||
這是Drama Ling語言學習應用的主要專案資料夾,包含前端和後端代碼。
|
||
|
||
## 專案結構
|
||
|
||
```
|
||
src/
|
||
├── backend/ # .NET Core Web API 後端
|
||
│ ├── DramaLing.API/ # Web API 專案
|
||
│ ├── DramaLing.Application/ # 應用服務層
|
||
│ ├── DramaLing.Core/ # 領域模型層
|
||
│ ├── DramaLing.Infrastructure/ # 基礎設施層
|
||
│ ├── DramaLing.Tests/ # 測試專案
|
||
│ └── DramaLing.sln # 解決方案檔
|
||
├── mobile/ # Flutter 移動應用
|
||
│ ├── lib/
|
||
│ │ ├── core/ # 核心功能 (常數、工具、服務)
|
||
│ │ ├── features/ # 功能模組 (認證、學習、對話等)
|
||
│ │ └── shared/ # 共用組件 (Widget、模型、Provider)
|
||
│ └── pubspec.yaml # Flutter 專案配置
|
||
└── docker-compose.yml # Docker 開發環境配置
|
||
```
|
||
|
||
## 技術棧
|
||
|
||
### 後端 (.NET Core)
|
||
- **.NET 8**: 最新的跨平台框架
|
||
- **ASP.NET Core Web API**: RESTful API 服務
|
||
- **Entity Framework Core**: ORM 資料庫存取
|
||
- **PostgreSQL**: 主要資料庫
|
||
- **Redis**: 快取和會話管理
|
||
- **JWT**: 身份驗證
|
||
- **Swagger/OpenAPI**: API 文檔
|
||
- **Serilog**: 結構化日誌
|
||
|
||
### 前端 (Flutter)
|
||
- **Flutter 3.16+**: 跨平台移動應用框架
|
||
- **Dart 3.0+**: 程式語言
|
||
- **Riverpod**: 狀態管理
|
||
- **Go Router**: 導航路由
|
||
- **Dio + Retrofit**: HTTP 客戶端
|
||
- **Hive**: 本地資料存儲
|
||
- **Material 3**: UI 設計系統
|
||
|
||
## 開發環境設置
|
||
|
||
### 必要工具
|
||
- [.NET 8 SDK](https://dotnet.microsoft.com/download/dotnet/8.0)
|
||
- [Flutter 3.16+](https://flutter.dev/docs/get-started/install)
|
||
- [Docker Desktop](https://www.docker.com/products/docker-desktop)
|
||
- [PostgreSQL](https://www.postgresql.org/download/) (或使用Docker)
|
||
|
||
### 快速開始
|
||
|
||
#### 1. 啟動開發環境
|
||
```bash
|
||
# 啟動資料庫和Redis
|
||
cd src
|
||
docker-compose up -d postgres redis
|
||
|
||
# 或者啟動完整環境包含API
|
||
docker-compose up -d
|
||
```
|
||
|
||
#### 2. 後端開發
|
||
```bash
|
||
cd src/backend
|
||
|
||
# 還原套件
|
||
dotnet restore
|
||
|
||
# 建立資料庫
|
||
dotnet ef database update --project DramaLing.Infrastructure --startup-project DramaLing.API
|
||
|
||
# 啟動API服務
|
||
dotnet run --project DramaLing.API
|
||
|
||
# API將在 http://localhost:5000 啟動
|
||
# Swagger UI: http://localhost:5000
|
||
```
|
||
|
||
#### 3. 前端開發
|
||
```bash
|
||
cd src/mobile
|
||
|
||
# 安裝套件
|
||
flutter pub get
|
||
|
||
# 程式碼生成 (Riverpod, Retrofit 等)
|
||
dart run build_runner build
|
||
|
||
# 啟動Flutter應用 (需要模擬器或實體裝置)
|
||
flutter run
|
||
```
|
||
|
||
## API 文檔
|
||
|
||
- **開發環境**: http://localhost:5000
|
||
- **Swagger UI**: http://localhost:5000 (開發模式下)
|
||
- **API 規格文檔**: `../../docs/04_technical/api/`
|
||
|
||
## 資料庫
|
||
|
||
### 連線資訊 (開發環境)
|
||
- **主機**: localhost
|
||
- **埠號**: 5432
|
||
- **資料庫**: dramaling_dev
|
||
- **使用者**: postgres
|
||
- **密碼**: password
|
||
|
||
### 遷移指令
|
||
```bash
|
||
# 建立遷移
|
||
dotnet ef migrations add <MigrationName> --project DramaLing.Infrastructure --startup-project DramaLing.API
|
||
|
||
# 更新資料庫
|
||
dotnet ef database update --project DramaLing.Infrastructure --startup-project DramaLing.API
|
||
|
||
# 移除最後一個遷移
|
||
dotnet ef migrations remove --project DramaLing.Infrastructure --startup-project DramaLing.API
|
||
```
|
||
|
||
## 測試
|
||
|
||
### 後端測試
|
||
```bash
|
||
cd src/backend
|
||
dotnet test
|
||
```
|
||
|
||
### 前端測試
|
||
```bash
|
||
cd src/mobile
|
||
flutter test
|
||
```
|
||
|
||
## 部署
|
||
|
||
### 生產環境建構
|
||
```bash
|
||
# 後端
|
||
cd src/backend
|
||
dotnet publish DramaLing.API -c Release -o publish
|
||
|
||
# 前端
|
||
cd src/mobile
|
||
flutter build apk --release # Android
|
||
flutter build ios --release # iOS
|
||
```
|
||
|
||
## 開發指南
|
||
|
||
### 架構原則
|
||
- **Clean Architecture**: 分層架構,依賴倒置
|
||
- **CQRS**: 命令查詢職責分離 (使用 MediatR)
|
||
- **Feature-based**: 按功能模組組織程式碼
|
||
- **API-first**: API 優先設計
|
||
|
||
### 編碼規範
|
||
- **後端**: 遵循 C# 編碼慣例
|
||
- **前端**: 遵循 Dart/Flutter 編碼慣例
|
||
- **命名**: 英文命名,中文註釋
|
||
- **測試**: 單元測試覆蓋率 > 80%
|
||
|
||
## 相關文檔
|
||
|
||
- [API 規格文檔](../../docs/04_technical/api/)
|
||
- [資料庫設計](../../docs/04_technical/database-schema.md)
|
||
- [技術選型決策](../../docs/04_technical/tech-stack-decision.md)
|
||
- [開發工作流程](../../docs/03_development/development-workflow.md)
|
||
|
||
## 問題回報
|
||
|
||
如有問題請參考:
|
||
- [ISSUES.md](../../ISSUES.md)
|
||
- [問題管理系統](../../README-問題管理.md)
|
||
|
||
## 授權
|
||
|
||
版權所有 © 2025 Drama Ling Team |