BikeControl (SwiftControl)
Use Zwift Click, Zwift Play, Shimano Di2, or any Bluetooth controller with MyWhoosh, Rouvy, Zwift, and more. Free to try on iOS, Android, Windows, and macOS.
Registro y análisis de partidos de la liga de pádel.
Translation pending
Sports & fitnessJavaScript · HTMLGitHub @fmarquezarate-pngOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Loading the full README. The saved excerpt is shown below.
Sistema personal de scouting y coaching de pádel para Fran. Aplicación web mobile-first, sin backend, sin login, sin instalación. Cada partido alimenta datos. Los datos alimentan la estrategia del siguiente partido. JUGAR → REGISTRAR → ACUMULAR → ANALIZAR → PREPARAR → JUGAR Cuatro pantallas y un único objetivo: que registrar un partido cueste menos de 2 minutos desde el móvil, sentado en el banquillo, y que con el tiempo esos registros se conviertan en decisiones tácticas. La fuente de verdad funcional es PROJECT_SPEC.md. El historial de cambios está en `CHANGRead the full README ↗
Sistema personal de scouting y coaching de pádel para Fran. Aplicación web mobile-first, sin backend, sin login, sin instalación.
Cada partido alimenta datos. Los datos alimentan la estrategia del siguiente partido.
JUGAR → REGISTRAR → ACUMULAR → ANALIZAR → PREPARAR → JUGAR
Cuatro pantallas y un único objetivo: que registrar un partido cueste menos de 2 minutos desde el móvil, sentado en el banquillo, y que con el tiempo esos registros se conviertan en decisiones tácticas.
| Pantalla | Para qué |
|---|---|
| Barra de arriba | Título con la competición debajo (tócala para cambiar), ⚙ Configuración, 🏠 Inicio, ☰ Menú y tu perfil. |
| Este mes | Tu grupo en curso: fechas, comparativa con cada rival, probabilidad de subir o bajar, y el resultado al terminar. |
| La pista | Inicio. Pista azul en perspectiva que es el menú: tocas una zona y la bola vuela hasta ella. Marcador con puesto, forma y balance. |
| Nuestra temporada | Números, escalera animada (5 métricas), mes a mes, acantilado, todos los partidos, rivales y techo. |
| La liga | Clasificación general ordenable, explorador de cualquier pareja y carga de datos. |
| Crónica | Tres actos, Ernesto & Jordi, izquierda y derecha, los dos niveles del club. |
| Mi perfil | Foto, quién eres en la liga, categoría, mixto y qué ver al abrir. |
| Configuración | Competición al abrir, carga de datos de la liga y copia de seguridad. |
| Rival | Eliges la pareja que te toca y salen proyección, historial directo, comparativa y lectura. |
| Registrar | Formulario rápido post-partido. |
| Historial | Tarjeta por partido, con filtros por rival, arquetipo, resultado y fecha. |
| Análisis | Win rate por arquetipo, juego medio de lectura, evolución temporal. |
| Briefing | Eliges el arquetipo esperado → máximo 3 bullets accionables antes de jugar. |
La fuente de verdad funcional es PROJECT_SPEC.md.
El historial de cambios está en CHANGELOG.md.
No hay que instalar ni compilar nada.
Opción 1 — abrir el archivo directamente
Haz doble clic en index.html. Se abre en el navegador y funciona.
Opción 2 — servidor local (recomendado si algo no carga bien)
cd PadelScouting
python3 -m http.server 8000
Luego abre http://localhost:8000 en el navegador.
Opción 3 — en el móvil Publica la carpeta en GitHub Pages, Netlify o Vercel y añade la URL a la pantalla de inicio del teléfono. Así se abre como si fuera una app.
⚠️ Los datos viven en el navegador donde registras. Si registras en el móvil y luego abres la web en el ordenador, no verás los mismos partidos: hay que mover los datos con export/import.
En el localStorage del navegador, bajo la clave padel-scouting.v1. Eso significa:
Por eso el backup no es opcional.
Exportar (guardar copia):
.json. Guárdalo en Drive, en el correo, donde quieras.Importar (restaurar o mover a otro dispositivo):
.json.Formato del backup:
{ "version": 1, "exportedAt": "2026-09-22T10:00:00.000Z", "matches": [] }
Recomendación: exportar una vez al mes o después de cada jornada de liga.
PadelScouting/
├── index.html estructura, navegación, carga de recursos
├── manifest.webmanifest para instalarla como app en el móvil
├── assets/ escudo del club: favicon, iconos de app y logo
├── css/
│ └── styles.css variables, componentes, responsive
├── js/
│ ├── liga-parser.js lee la clasificación de la liga (navegador y Node)
│ ├── liga.js motor: rating, simulación y calibración
│ ├── db.js lectura desde Supabase con caché local
│ ├── views-liga.js pantalla Rival y carga de datos
│ ├── views-temporada.js Nuestra temporada (secciones 01–06)
│ ├── views-general.js La pista (inicio), La liga y Crónica
│ ├── court.js la pista (foto o dibujo), la pelota y los iconos
│ ├── views-estemes.js Este mes: ronda en curso, avisos al abrir, resultados
│ ├── sync.js el registro de scouting sincronizado con la cuenta
│ ├── shell.js barra de arriba, panel ☰, Mi perfil, Configuración, bienvenida
│ ├── data.js catálogos (arquetipos, patrones, funcionó, no funcionó, estados)
│ ├── storage.js leer/guardar/editar/borrar · export · import · validación
│ ├── analysis.js win rate, medias, evolución, muestra insuficiente
│ ├── briefing.js reglas de briefing por arquetipo
│ └── app.js navegación, render, eventos, formularios
├── PROJECT_SPEC.md qué construimos y por qué
├── README.md cómo funciona y cómo trabajar con él
└── CHANGELOG.md qué ha cambiado
Separación de responsabilidades: UI → lógica → datos. Nada de meter toda la app en app.js, y los
catálogos en un solo sitio (data.js) para que no haya dos listas de patrones distintas conviviendo.
Sin frameworks, sin build, sin dependencias: HTML + CSS + JavaScript plano. Es suficiente y evita que el proyecto se vuelva difícil de mantener.
Hereda la estructura del motor predictivo ya validado: fuerzas → distribución → simulación → derivados → calibración.
Con los datos del primer semestre el motor acierta quién gana el 61,3% de las veces (moneda al aire: 50%). Es una ayuda para preparar el partido, no un pronóstico fiable, y la app lo dice.
Un detalle que costó encontrar: en la tabla de la liga, el equipo listado primero gana el 89,4% de los partidos. Ese orden depende del propio resultado, así que no mide nada. La calibración se hace en orientación neutra para no engañarse con ese 89%.
Formato de partido: al mejor de 3, con dos sets normales y super tie-break a 10 como tercero. El super tie-break no cuenta como juegos.
Incluye: registro rápido, persistencia local, edición, historial con filtros, análisis por arquetipo con protección ante muestras pequeñas, briefing de 3 bullets, export/import JSON.
No incluye (decidido explícitamente): backend, login, multiusuario, predicción de resultados, IA generativa de análisis, tracking punto a punto, estadísticas de cada golpe, ratings avanzados.
Ninguna de las dos se construye hasta que haya suficientes partidos acumulados para justificarla. Primero datos, después modelo.
main. Los cambios relevantes van por PR.CHANGELOG.md y la documentación que corresponda.