# 婚禮賓客管理系統 - Docker Setup

## 快速開始

### 1. 啟動 Docker 容器

```bash
docker compose up -d
```

### 2. 執行自動化安裝腳本

```bash
docker compose exec app bash /var/www/html/docker/setup.sh
```

**說明**：此腳本會自動完成：
- 建立 Laravel 11 專案
- 安裝 Filament 3.0, Breeze + React, Excel, PDF 等套件
- 設定環境變數與資料庫連線
- 還原所有自訂檔案（migrations, models, controllers, React components）
- 執行資料庫 migrations

### 3. 建立 Filament 管理員帳號

```bash
docker compose exec app php artisan make:filament-user
```

### 4. 編譯前端資源

```bash
docker compose exec app npm run build
```

### 5. 設定 Discord Webhook（可選）

在 `.env` 加上：

```dotenv
DISCORD_WEBHOOK_URL=your_discord_webhook_url
```

若未設定 `DISCORD_WEBHOOK_URL`，系統會跳過 Discord 發送並記錄 warning，不影響 RSVP/LINE 主流程。

### 6. 設定 Google Sheet 同步（可選）

在 `.env` 加上：

```dotenv
GOOGLE_SHEETS_SPREADSHEET_ID=
GOOGLE_SHEETS_SHEET_NAME=guests
GOOGLE_SHEETS_SERVICE_ACCOUNT_CREDENTIALS_JSON=
```

手動執行同步：

```bash
docker compose exec app php artisan guests:sync-google-sheet --full
docker compose exec app php artisan guests:sync-google-sheet --guest-id=123
```

## 訪問應用程式

- **主網站**: http://localhost:8000
- **後台管理**: http://localhost:8000/admin
- **phpMyAdmin**: http://localhost:8080

## 常用指令

### 進入容器
```bash
docker compose exec app bash
```

### 執行 Artisan 指令
```bash
docker compose exec app php artisan <command>
```

### 執行 Composer
```bash
docker compose exec app composer <command>
```

### 執行 NPM
```bash
docker compose exec app npm <command>
```

### 查看日誌
```bash
docker compose logs -f
docker compose logs -f app
docker compose logs -f webserver
```

### 重啟服務
```bash
docker compose restart
```

### 停止服務
```bash
docker compose down
```

### 停止並刪除所有數據
```bash
docker compose down -v
```

## 資料庫連線資訊

- **Host**: db (容器內) 或 localhost (本機)
- **Port**: 3306
- **Database**: wedding_guest_management
- **Username**: wedding_user
- **Password**: password
- **Root Password**: root

## 技術棧

- PHP 8.2
- Laravel 11
- Laravel Filament 3.0
- Inertia.js + React
- MySQL 8.0
- Nginx
- Node.js 20.x
- Tailwind CSS

## 專案結構

```
wedding/
├── app/                    # Laravel 應用程式碼
├── database/              # Migrations, seeders, factories
├── resources/
│   ├── js/               # React 組件
│   └── views/            # Blade 樣板
├── routes/               # 路由定義
├── docker/               # Docker 設定檔
│   ├── nginx/           # Nginx 設定
│   └── setup.sh         # 初始化腳本
├── docker-compose.yml    # Docker Compose 設定
└── Dockerfile           # Docker 映像定義

## 開發流程

1. 修改程式碼
2. 如修改 PHP: 容器會自動重載
3. 如修改 JS/CSS: 執行 `docker compose exec app npm run dev`
4. 如修改資料庫: 執行 `docker compose exec app php artisan migrate`

## 疑難排解

### 容器無法啟動
```bash
docker compose down
docker compose up -d --build
```

### 權限問題
```bash
docker compose exec app chown -R www-data:www-data /var/www/html/storage
docker compose exec app chmod -R 755 /var/www/html/storage
```

### 清除快取
```bash
docker compose exec app php artisan cache:clear
docker compose exec app php artisan config:clear
docker compose exec app php artisan view:clear
```
