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.
Fases (claves numéricas: "1", "2", "3"...): Cada fase contiene:

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".

ModoCamposQué registra el usuario
setsname, sets (número), reps, typeKg + reps por serie
resultnameTexto libre (tiempo, reps totales)
intervalname, duration, on, offReps totales
tabataname, rounds (array de 8 strings)Reps totales
roundsname, count, rest, exercises (array de {name, reps})Rondas completadas
laddername, duration, exercises (array de strings), descPeldaño máximo
pyramidname, duration, exercises (array de strings), step, descNivel máximo
amrapname, durationReps totales
emomname, duration, exercises (array de {name, reps}), descRondas completadas
supersetname, sets, exercises (array de {name, reps}), descKg + 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.