# NoiR - 直播平台

一个基于 Next.js 和 TypeScript 构建的现代化直播平台。

## 技术栈

- **前端框架**: Next.js 14 (React)
- **语言**: TypeScript (TSX)
- **样式**: Tailwind CSS
- **后端**: Node.js + TypeScript
- **服务器端**: Next.js API Routes

## 项目结构

```
GP_LIVE/
├── app/                    # Next.js App Router
│   ├── api/               # API 路由
│   ├── globals.css        # 全局样式
│   ├── layout.tsx         # 根布局
│   └── page.tsx           # 首页
├── components/            # React 组件
├── public/               # 静态资源
├── package.json          # 项目依赖
├── tsconfig.json         # TypeScript 配置
├── tailwind.config.ts    # Tailwind 配置
└── next.config.js        # Next.js 配置
```

## 开始使用

### 安装依赖

```bash
npm install
```

### 开发模式

```bash
npm run dev
```

打开 [http://localhost:3000](http://localhost:3000) 查看应用。

### 构建生产版本

```bash
npm run build
npm start
```

## 功能规划

- [ ] 用户认证系统
- [ ] 直播流管理
- [ ] 实时聊天功能
- [ ] 礼物系统
- [ ] 主播管理面板
- [ ] 观看者统计
- [ ] 视频录制与回放

## 資料庫（SQLite / PostgreSQL）

本專案使用 Next.js `app/api/*` 作為 Node.js 伺服器端 API。資料層支援 **SQLite**（本機預設）與 **PostgreSQL**（正式環境建議）。

### SQLite（本機開發，預設）

- **路徑**：`data/gp-live.sqlite`（已加入 `.gitignore`）
- **覆寫**：`GP_LIVE_DB_PATH`

### PostgreSQL（正式環境）

在 `.env` 設定：

```env
GP_LIVE_DB_DRIVER=postgres
DATABASE_URL=postgresql://使用者:密碼@主機:5432/gp_live
```

Next.js 與 WebSocket 服務（`npm run dev` / `dev:ws`）會共用同一 `DATABASE_URL`。

### 從 SQLite 匯入既有資料

1. 先啟動一次應用（或任一會初始化 schema 的流程），讓 Postgres 建好表。
2. 執行：

```bash
npm run db:migrate-to-postgres
```

需同時設定 `DATABASE_URL` 與（若非同預設路徑）`GP_LIVE_DB_PATH`。

### 範例 API

- **健康檢查**：`GET /api/health`
- **使用者列表**：`GET /api/users`
- **建立使用者**：`POST /api/users`
  - body 範例：`{ "id": "chaenna02", "displayName": "主播名稱" }`
- **取得使用者（含 VODs）**：`GET /api/users/:id`

## 开发规范

- 使用 TypeScript 进行类型安全开发
- 组件使用 TSX 格式
- API 路由使用 TypeScript
- 遵循 Next.js 最佳实践

