Cómo funciona
La app lee planes de entrenamiento en formato JSON. Un plan define fases, sesiones y ejercicios. Una vez creado, lo importas desde la pestaña Más > Mis Planes > Importar plan.
Estructura básica
Un plan tiene esta forma:
{
"_meta": {
"name": "Mi Plan",
"desc": "Descripción corta del programa"
},
"1": {
"name": "Fase 1",
"desc": "Fuerza base",
"sessions": {
"Sesión A": [
{ "name": "Sentadilla", "sets": 3, "reps": "5", "type": "main" },
{ "name": "Press Banca", "sets": 3, "reps": "5", "type": "main" }
],
"Sesión B": [
{ "name": "Peso Muerto", "sets": 3, "reps": "5", "type": "main" }
]
}
}
}
Campos obligatorios
_meta (objeto): Metadata del programa.
name(string) — Nombre del programadesc(string) — Descripción corta
Fases (claves numéricas: "1", "2", "3"...): Cada fase contiene:
name(string) — Nombre de la fasedesc(string) — Descripción de la fasesessions(objeto) — Claves = nombres de sesión, valores = arrays de ejercicios
Tipos de ejercicio
Cada ejercicio tiene un campo mode que determina cómo se muestra en la app. Si no se especifica, el modo por defecto es "sets".
| Modo | Campos | Qué registra el usuario |
|---|---|---|
| sets | name, sets (número), reps, type | Kg + reps por serie |
| result | name | Texto libre (tiempo, reps totales) |
| interval | name, duration, on, off | Reps totales |
| tabata | name, rounds (array de 8 strings) | Reps totales |
| rounds | name, count, rest, exercises (array de {name, reps}) | Rondas completadas |
| ladder | name, duration, exercises (array de strings), desc | Peldaño máximo |
| pyramid | name, duration, exercises (array de strings), step, desc | Nivel máximo |
| amrap | name, duration | Reps totales |
| emom | name, duration, exercises (array de {name, reps}), desc | Rondas completadas |
| superset | name, sets, exercises (array de {name, reps}), desc | Kg + reps por serie por ejercicio |
Ejemplo completo
Un plan con 2 fases y varios modos de ejercicio:
{
"_meta": { "name": "Plan Completo", "desc": "Fuerza + Condicionamiento" },
"1": {
"name": "Fuerza",
"desc": "Progresión lineal 3x5",
"sessions": {
"Fuerza A": [
{ "name": "Sentadilla", "sets": 3, "reps": "5", "type": "main" },
{ "name": "Press Banca", "sets": 3, "reps": "5", "type": "main" },
{ "name": "Remo con Barra", "sets": 3, "reps": "5", "type": "main" },
{ "name": "Curl + Tríceps", "mode": "superset", "sets": 3,
"exercises": [
{ "name": "Curl Bíceps", "reps": "10" },
{ "name": "Extensión Tríceps", "reps": "10" }
]
}
],
"Condicionamiento": [
{ "name": "EMOM Kettlebell", "mode": "emom", "duration": "10min",
"exercises": [
{ "name": "Swing", "reps": "15" },
{ "name": "Goblet Squat", "reps": "10" }
]
},
{ "name": "Circuito Final", "mode": "rounds", "count": 3, "rest": "60s",
"exercises": [
{ "name": "Burpees", "reps": "10" },
{ "name": "Flexiones", "reps": "15" },
{ "name": "Sentadillas", "reps": "20" }
]
}
]
}
},
"2": {
"name": "Hipertrofia",
"desc": "Volumen 4x8-12",
"sessions": {
"Torso": [
{ "name": "Press Banca", "sets": 4, "reps": "8-10", "type": "main" },
{ "name": "Dominadas", "sets": 4, "reps": "F", "type": "main" },
{ "name": "Press Militar", "sets": 3, "reps": "10", "type": "assist" }
],
"Pierna": [
{ "name": "Sentadilla", "sets": 4, "reps": "8", "type": "main" },
{ "name": "Peso Muerto Rumano", "sets": 3, "reps": "10", "type": "main" },
{ "name": "Tabata Piernas", "mode": "tabata",
"rounds": ["Sentadilla", "Zancada Izq", "Sentadilla", "Zancada Der", "Sentadilla Sumo", "Salto", "Sentadilla", "Isométrico"]
}
]
}
}
}
Crear un plan con IA
Puedes usar ChatGPT, Claude o cualquier LLM para generar tu plan. Copia el prompt de abajo, describe tu objetivo, y pega el JSON resultante en un archivo .json para importarlo.
Eres un entrenador personal experto. Crea un plan de entrenamiento en formato JSON que pueda importarse directamente en una app de seguimiento de entrenos.
## Reglas del formato
1. El JSON debe tener un objeto `_meta` con `name` (nombre del programa) y `desc` (descripción corta).
2. Las fases se definen con claves numéricas ("1", "2", "3"...). Cada fase tiene `name`, `desc` y `sessions`.
3. Cada sesión es un array de ejercicios.
4. Cada ejercicio DEBE tener un campo `name`.
5. Modos de ejercicio disponibles (campo `mode`):
- **sets** (por defecto si no se especifica): campos `sets` (número de series), `reps` (objetivo), `type` ("main", "assist" o "extra"). El usuario registra kg y reps por serie.
- **result**: solo `name`. El usuario registra un texto libre (tiempo, resultado).
- **interval**: campos `duration`, `on`, `off`. El usuario registra reps totales.
- **tabata**: campo `rounds` (array de exactamente 8 strings). 20s on / 10s off. Registra reps totales.
- **rounds**: campos `count` (número de rondas, 0=max), `rest` (descanso entre rondas), `exercises` (array de {name, reps}). Registra rondas completadas.
- **ladder**: campos `duration`, `exercises` (array de strings), `desc` (opcional). Registra peldaño máximo.
- **pyramid**: campos `duration`, `exercises` (array de strings), `step` (incremento), `desc` (opcional). Registra nivel máximo.
- **amrap**: campo `duration`. Registra reps totales.
- **emom**: campos `duration`, `exercises` (array de {name, reps}), `desc` (opcional). Registra rondas completadas.
- **superset**: campos `sets`, `exercises` (array de {name, reps}), `desc` (opcional). El usuario registra kg y reps por serie por ejercicio.
## Objetivo del usuario
[DESCRIBE AQUÍ TU OBJETIVO: experiencia, equipo disponible, días por semana, objetivos, lesiones, etc.]
## Instrucciones
- Devuelve SOLO el JSON, sin texto adicional.
- Usa nombres de ejercicios en español.
- Crea entre 2 y 4 fases con progresión lógica.
- Varía los modos de ejercicio según el tipo de sesión.
- Incluye calentamiento o acondicionamiento si es apropiado.