My Gym My Way
Free home-gym workouts built from the equipment you own. No paywall, no account, no tracking.
翻譯準備中
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證正在載入完整 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. La fuente de verdad funcional es PROJECT_SPEC.md. El historial de cambios está en `CHANG檢視完整 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.