BikeControl (SwiftControl)
使用 Zwift Click、Zwift Play、Shimano Di2 或任何藍牙控制器,搭配 MyWhoosh、Rouvy、Zwift 等。iOS、Android、Windows、macOS 均可免費試用。
AI 翻译
尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证正在加载完整 README。 以下为已保存的摘录。
Plataforma de video para complejos de Fútbol 5 y Pádel: buscá tu partido, reproducilo con timeline avanzada (Timeslice), cámara lenta/acelerada, marcadores y clips. Este es un proyecto funcional de punta a punta — frontend real, backend real, base de datos real, y un pipeline de video real con FFmpeg generando HLS y thumbnails. No es un mockup. Ver docs/ARCHITECTURE.md sección 11 para el detalle exacto de qué corre real y qué quedó como interfaz lista para infraestructura que este entorno de desarrollo no tiene disponible (cámaras físicas, un servidor MinIO, un SMTP real).查看完整 README ↗
"Jugá. Grabá. Reviví."
Plataforma de video para complejos de Fútbol 5 y Pádel: buscá tu partido, reproducilo con timeline avanzada (Timeslice), cámara lenta/acelerada, marcadores y clips.
Este es un proyecto funcional de punta a punta — frontend real, backend real, base de
datos real, y un pipeline de video real con FFmpeg generando HLS y thumbnails. No es un
mockup. Ver docs/ARCHITECTURE.md sección 11 para el detalle exacto de qué corre real y qué
quedó como interfaz lista para infraestructura que este entorno de desarrollo no tiene
disponible (cámaras físicas, un servidor MinIO, un SMTP real).
backend/ API NestJS + worker de procesamiento de video (Drizzle ORM + Postgres + Redis/BullMQ + FFmpeg)
frontend/ Next.js 14 (App Router) + Tailwind + hls.js
sample-media/ Videos sintéticos de prueba (generados con FFmpeg, timestamp quemado en pantalla)
storage-data/ "Bucket" local de desarrollo (se regenera corriendo el seed)
docker-compose.yml Orquestación de referencia para producción (Postgres + Redis + MinIO + backend + worker + frontend)
docs/ ARCHITECTURE.md · DATABASE.md · API.md
Requisitos: Node.js 20+, PostgreSQL 16, Redis, FFmpeg instalados localmente.
# Crear la base y el usuario (una sola vez)
psql -c "CREATE ROLE ecp_user LOGIN PASSWORD 'ecp_pass';"
psql -c "CREATE DATABASE elcampito_play OWNER ecp_user;"
# Levantar Postgres y Redis si no están corriendo ya como servicio
pg_ctlcluster 16 main start # o el equivalente de tu distro / `brew services start postgresql`
redis-server --daemonize yes
cd backend
cp .env.example .env # o usar el .env ya incluido, ajustando secretos
npm install
npm run db:migrate # aplica las migraciones SQL (Drizzle)
npm run seed # crea "Deportivo San Martín", canchas, usuarios demo, y PROCESA los videos de sample-media/ con FFmpeg real
npm run start:dev # API en http://localhost:3001/api
El seed corre el pipeline de FFmpeg de verdad (segmentación HLS + sprite de thumbnails) sobre
los videos de sample-media/ — tarda unos segundos y deja todo listo para reproducir.
cd frontend
npm install
npm run dev # http://localhost:3000
demo1234)| Rol | |
|---|---|
[email protected] | SUPER_ADMIN |
[email protected] | COMPLEX_ADMIN |
[email protected] | PLAYER (jugó ambos partidos de la demo) |
[email protected] | PLAYER (Fútbol 5) |
[email protected] | PLAYER (Pádel) |
cp .env.example .env # definir JWT_ACCESS_SECRET y VIDEO_URL_SIGNING_SECRET
docker compose up --build
docker compose exec backend npm run db:migrate
docker compose exec backend npm run seed
Con Docker, el STORAGE_PROVIDER pasa a S3 apuntando al MinIO del compose — ver
docker-compose.yml y docs/ARCHITECTURE.md sección 5.
docs/ARCHITECTURE.md — diseño completo, decisiones técnicas (incluida la razón por la
que el proyecto usa Drizzle ORM en vez de Prisma), plan de cámaras IP/RTSP/NVR, plan de "ver
en vivo", seguridad, y plan de escalamiento de 1 complejo a 100+.docs/DATABASE.md — diagrama entidad-relación y el porqué de cada tabla.docs/API.md — todos los endpoints REST.Auth completo (registro, login, JWT + refresh con rotación, recuperar/cambiar contraseña, verificación de email — roles SUPER_ADMIN/COMPLEX_ADMIN/PLAYER) · Dashboard "Mis partidos" con buscador avanzado (fecha/preset/rango, deporte, cancha, franja horaria) · Reproductor HLS profesional (play/pause, volumen, pantalla completa, velocidades 0.5x–8x, replay ±5/10/30s, atajos de teclado) · Timeline avanzada con hora real, zoom, thumbnails al arrastrar el cursor, eventos del partido y marcadores clickeables · Marcadores/Timeslice privados por jugador · Clips ("mis mejores momentos") generados con FFmpeg sin tocar el video original · Compartir enlaces privados con vencimiento · Fútbol 5 (equipos, goles, tarjetas) y Pádel (parejas, sets, resultado) modelados explícitamente · Panel de administración (stats, estado de cámaras, almacenamiento usado/disponible, videos más pesados) · Auditoría de acciones sensibles · Notificaciones in-app · Landing page pública · Diseño responsive (desktop/tablet/mobile con sidebar colapsable).