2026-03-14 21:46:31 +08:00
2026-03-14 07:18:53 -04:00
2026-03-14 07:18:53 -04:00
2026-03-14 07:18:53 -04:00
2026-03-14 07:18:53 -04:00
2026-03-14 07:18:53 -04:00
2026-03-14 07:18:53 -04:00
2026-03-14 07:18:53 -04:00
2026-03-14 07:18:53 -04:00

Tennis Training Hub

AI 网球训练助手,提供训练计划、姿势分析、实时摄像头分析、在线视频录制与视频库管理。当前版本新增独立 Go 媒体服务,用于处理在线录制、分段上传、实时推流信令和归档回放。

Architecture

  • client/: React 19 + TypeScript + Tailwind CSS 4 + shadcn/ui
  • server/: Express + tRPC + Drizzle + MySQL/TiDB,负责业务 API、登录、训练数据与视频库元数据
  • media/: Go 媒体服务,负责录制会话、分段上传、WebRTC 信令、关键片段标记与 FFmpeg 归档
  • docker-compose.yml: 单机部署编排
  • deploy/nginx.te.hao.work.conf: te.hao.work 的宿主机 nginx 入口配置

Online Recording

在线录制模块采用双链路设计:

  • 浏览器端 MediaRecorder 本地压缩并每 60 秒自动分段上传
  • 浏览器端 RTCPeerConnection 同步建立 WebRTC 低延迟推流链路
  • 客户端运动检测自动写入关键片段 marker,也支持手动标记
  • 摄像头中断后自动重连,保留既有分段与会话
  • 服务端 worker 将分段合并归档,并产出 WebM 回放;FFmpeg 可用时额外生成 MP4

Quick Start

Local development

pnpm install
cp .env.example .env
pnpm dev

本地开发时:

  • Node 应用默认运行在 http://localhost:3000
  • 若设置 MEDIA_SERVICE_URL=http://127.0.0.1:8081,Express 会把 /media 代理到 Go 服务
  • Go 媒体服务可单独启动:
cd media
go mod tidy
go run .

Checks

pnpm check
pnpm test
pnpm test:go
pnpm build
pnpm test:e2e
pnpm verify

cd media
go build ./...

首次运行浏览器测试前执行:

pnpm exec playwright install chromium

Production Deployment

单机部署推荐:

  1. 宿主机 nginx 处理 80/443 和 TLS
  2. docker compose up -d --build 启动 app + media + worker
  3. nginx 将 / 转发到 app:3000/media/ 转发到 media:8081

详细步骤见:

  • docs/deploy.md
  • docs/media-architecture.md
  • docs/frontend-recording.md

Documentation Index

  • docs/FEATURES.md: 当前功能特性与能力边界
  • docs/testing.md: 自动测试分层与运行方式
  • docs/verified-features.md: 已验证通过的项目清单
  • docs/developer-workflow.md: 阶段可中断的开发与本地提交流程
  • docs/deploy.md: 部署指南
  • docs/media-architecture.md: 媒体服务架构
  • docs/frontend-recording.md: 前端录制与移动端适配说明

Environment

关键环境变量见 .env.example,重点包括:

  • DATABASE_URL
  • JWT_SECRET
  • MEDIA_SERVICE_URL
  • VITE_MEDIA_BASE_URL

Notes

  • 浏览器兼容目标以 Chrome 为主
  • 录制文件优先产出 WebM,MP4 为服务端可选归档产物
  • 存储策略当前为本地卷优先,适合单机 Compose 部署
描述
AI-Powered Home Tennis Training Platform - 在家网球训练计划与AI姿势识别矫正系统
自述文档 9.2 MiB
语言
TypeScript 94.2%
Go 3.2%
JavaScript 1.9%
CSS 0.6%