type: project
name: tg-live-game-hono
status: active
created: 2024-12-31
updated: 2026-01-06
kanban_id: 7c6bb2ce-90a2-4e96-bc04-5facdcdb33
parent: "[[_project|TG Live Game]]"
TG Live Game Hono
后端 API 服务,基于 Hono + Cloudflare Workers + D1 构建。
技术栈
| 类别 |
技术 |
版本 |
| 框架 |
Hono |
4.11.1 |
| 运行时 |
Cloudflare Workers |
- |
| 数据库 |
Cloudflare D1 (SQLite) |
- |
| 验证 |
Zod |
4.3.5 |
| 语言 |
TypeScript |
5.9.3 |
| 测试 |
Vitest |
3.2.4 |
| Lint |
Biome |
2.3.11 |
| 部署 |
Wrangler |
4.56.0 |
项目结构
src/
├── index.ts # 应用入口
├── node.ts # Node.js 本地开发入口
├── middleware/ # 中间件
│ └── auth.ts # JWT 认证 + RBAC 权限
├── routes/ # API 路由
│ ├── auth.ts # 认证接口
│ ├── user.ts # 用户管理 (admin only)
│ ├── cameras.ts # 摄像头管理
│ ├── sessions.ts # 会话管理
│ ├── stats.ts # 观看统计
│ ├── stream.ts # Cloudflare Stream
│ └── audit.ts # 审计日志
├── services/ # 业务服务
├── types/ # TypeScript 类型
└── utils/ # 工具函数
API 路由
公开接口
| 方法 |
路由 |
描述 |
| POST |
/api/auth/login |
用户登录 |
| POST |
/api/auth/refresh |
刷新 Token |
认证接口
| 方法 |
路由 |
描述 |
权限 |
| GET |
/api/auth/me |
获取当前用户 |
* |
| POST |
/api/auth/logout |
退出登录 |
* |
| POST |
/api/auth/change-password |
修改密码 |
* |
用户管理 (admin)
| 方法 |
路由 |
描述 |
| GET |
/api/users |
用户列表 |
| GET |
/api/users/:id |
用户详情 |
| POST |
/api/users |
创建用户 |
| PUT |
/api/users/:id |
更新用户 |
| DELETE |
/api/users/:id |
删除用户 |
摄像头管理
| 方法 |
路由 |
描述 |
| GET |
/api/cameras |
摄像头列表 |
| GET |
/api/cameras/:id |
摄像头详情 |
| POST |
/api/cameras |
创建摄像头 |
| PUT |
/api/cameras/:id |
更新摄像头 |
| DELETE |
/api/cameras/:id |
删除摄像头 |
Stream 管理
| 方法 |
路由 |
描述 |
| GET |
/api/stream/videos |
视频列表 |
| GET |
/api/stream/live-inputs |
直播输入列表 |
| POST |
/api/stream/live-inputs |
创建直播输入 |
| DELETE |
/api/stream/live-inputs/:id |
删除直播输入 |
统计 & 审计
| 方法 |
路由 |
描述 |
| GET |
/api/stats/* |
观看统计 |
| GET |
/api/audit/* |
审计日志 |
数据库设计
D1 配置
[[d1_databases]]
binding = "DB"
database_name = "tg_live_game"
database_id = "970f081e-42c8-46bb-b385-b7c1ab2ceaa5"
数据表
| 表名 |
描述 |
| users |
用户信息 |
| user_permissions |
用户权限 |
| cameras |
摄像头配置 |
| live_sessions |
直播会话 |
| videos |
视频记录 |
| view_stats |
观看统计 |
| audit_logs |
审计日志 |
认证系统
JWT 配置
[vars]
JWT_EXPIRES_IN = "86400" # 24小时
REFRESH_EXPIRES_IN = "604800" # 7天
RBAC 角色
| 角色 |
权限 |
| admin |
所有权限 |
| operator |
摄像头/视频/直播管理 |
| viewer |
只读访问 |
中间件
// 认证中间件
authMiddleware()
// 角色检查
requireRole('admin')
requireRole('admin', 'operator')
部署信息
开发命令
# 安装依赖
pnpm install
# 本地开发 (使用本地 D1)
pnpm dev
# 远程开发 (使用远程 D1)
pnpm dev:remote
# 类型检查
pnpm typecheck
# 运行测试
pnpm test
# 代码检查
pnpm lint
# 格式化代码
pnpm format
# 部署
pnpm deploy
D1 数据库操作
# 本地执行 SQL
npx wrangler d1 execute tg_live_game --command "SELECT * FROM users;"
# 远程执行 SQL
npx wrangler d1 execute tg_live_game --remote --command "SELECT * FROM users;"
# 初始化 Schema
npx wrangler d1 execute tg_live_game --remote --file=./schema.sql
Secrets 管理
wrangler secret put JWT_SECRET
wrangler secret put CF_ACCOUNT_ID
wrangler secret put CF_API_TOKEN
wrangler secret put CUSTOMER_SUBDOMAIN
代码仓库
| 环境 |
路径 |
| 开发 |
/Users/yibu/dev_workspace/frontend/tg-live-game/tg-live-game-hono |
相关文档
- [[_project|TG Live Game]] - 父项目
- [[tg-live-game-web/_project|tg-live-game-web]] - 前端项目
- [[architecture-v1]] - 系统架构
- [[workflow]] - 开发工作流