BikeControl (SwiftControl)
使用 Zwift Click、Zwift Play、Shimano Di2 或任何藍牙控制器,搭配 MyWhoosh、Rouvy、Zwift 等。iOS、Android、Windows、macOS 均可免費試用。
AI 翻译
尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证正在加载完整 README。 以下为已保存的摘录。
Aplicación web (PWA) para quinielas de fútbol entre amigos: cada grupo predice los marcadores de un torneo, la app puntúa sola con los resultados reales y lleva la tabla, el histórico y el pozo. Nació para el Mundial 2026 y hoy corre varios torneos a la vez — Copa del Mundo, UEFA Champions League y la primera división de Costa Rica— cada uno con sus propias quinielas, reglas y puntajes.查看完整 README ↗
Aplicación web (PWA) para quinielas de fútbol entre amigos: cada grupo predice los marcadores de un torneo, la app puntúa sola con los resultados reales y lleva la tabla, el histórico y el pozo.
Nació para el Mundial 2026 y hoy corre varios torneos a la vez — Copa del Mundo, UEFA Champions League y la primera división de Costa Rica— cada uno con sus propias quinielas, reglas y puntajes.
La usa un grupo real de 26 personas, y se juega por plata. Eso condiciona casi todas las decisiones de diseño: nadie puede ver las predicciones ajenas antes del saque, las reglas no se cambian con el torneo en marcha sin votación del grupo, y un puntaje mal calculado no es un detalle cosmético.
| Capa | Tecnología |
|---|---|
| Frontend | React 19 · Vite 6 · Tailwind CSS 4 · motion · TanStack Query · vite-plugin-pwa |
| Backend | FastAPI (Python 3.12) · PyJWT · httpx · pywebpush |
| Base de datos | PostgreSQL en Supabase, con Row Level Security y pg_cron |
| Autenticación | Supabase Auth: correo y contraseña, o «Entrar con Google» |
| Despliegue | Vercel (frontend y backend juntos) |
frontend/ React + Vite. La PWA y toda la interfaz.
backend/ FastAPI. Sincronización con ESPN, notificaciones push, tareas de admin.
database/ Migraciones SQL numeradas (87 a la fecha). Se aplican a mano.
docs/ Documentación de funcionalidades concretas.
shared/ Constantes compartidas.
scripts/ Utilidades sueltas de mantenimiento.
Hace falta Node 20 y Python 3.12, y un proyecto de Supabase propio con
las migraciones de database/ aplicadas en orden.
cd frontend
npm install
cp .env.example .env # y completá los valores de tu proyecto
npm run dev # http://localhost:5173
.env necesita:
VITE_SUPABASE_URL=https://<tu-proyecto>.supabase.co
VITE_SUPABASE_ANON_KEY=<tu anon key>
VITE_API_URL=/_backend
cd backend
python -m venv .venv && source .venv/bin/activate
pip install -r requirements-dev.txt
cp .env.example .env # y completá los valores
uvicorn app.main:app --reload # http://localhost:8000
requirements.txt es solo lo que viaja al serverless;
requirements-dev.txt lo incluye y añade el servidor local y pytest.
cd frontend
npm test # 301 pruebas de lógica (vitest)
npm run test:ui # 150 pruebas de interfaz (Playwright, sin backend real)
npm run lint
cd ../backend
python -m pytest # 212 pruebas
Las de Playwright interceptan Supabase: no tocan ninguna base de datos real y no necesitan credenciales.
Cada push a main despliega frontend y backend juntos en Vercel
(vercel.json → experimentalServices; el backend queda bajo /_backend).
Las tareas periódicas —sincronizar marcadores, el resumen de las 6 a.m. y el
recordatorio del saque— las dispara pg_cron desde la propia base de datos,
no GitHub Actions. Se midió que schedule: de GitHub cumplía apenas el 2.5% de
las corridas esperadas.
Las migraciones de database/ se aplican a mano en el editor SQL de
Supabase, en orden. database/verificar_estado.sql es de solo lectura y compara
la base viva contra el repo.
CLAUDE.md — el documento importante: un registro de
decisiones de arquitectura con la medición que motivó cada una, el modo de
fallo que evita y los errores que ya se cometieron. Si vas a tocar el puntaje,
la seguridad de la base o los cupos del comodín, empezá por ahí.docs/CALENDARIO.md — exportación de partidos al calendario.APLICAR_MIGRACIONES.md — cómo aplicar las migraciones.En producción y en uso. No es un proyecto de demostración: los datos son reales y hay dinero de por medio, así que los cambios se miden antes de publicarse.