Pago único. Sin límites de tasa. WebP transparente en dos estilos. Alternativas y progresiones integradas.
Cada imagen estilo classic incluye un fondo realmente transparente. Colócala sobre blanco, modo oscuro, un color de marca, una foto — sin máscaras, sin compositing, sin "cuadrado blanco en mi UI oscura". No hemos encontrado otro conjunto de datos de ejercicios que ofrezca esto.




Mismo archivo. Sin variantes por tema, sin trucos de canvas, sin compositing en runtime. images/classic/one-arm-kettlebell-floor-press-peak.webp.
Cada ejercicio incluye relaciones regression_of y progression_of. Sube y baja la escalera de progresión con una sola consulta — sin backend, sin lógica de coach.





Filtra por equipo, parte del cuerpo o selecciona a mano — todo está en el JSON. Sin endpoint, sin límite de tasa, sin esperar a nuestro CDN.






Cada ejercicio está etiquetado por seguridad — knee_safe, shoulder_safe, lower_back_safe, no_axial_load. Construye UIs amigables para rehabilitación sin clasificador propio.






JSON. SQLite. Tipos TypeScript escritos a mano o generados. Mismos datos, tres formas.
{
"id": "squat",
"name": "Sentadilla Trasera con Barra",
"category": "strength",
"description": "Un movimiento compuesto de tren inferior que trabaja cuádriceps, glúteos e isquiotibiales.",
"instructions": [
"Coloca la barra sobre tus trapecios superiores.",
"Desrackea y da un paso atrás, con los pies al ancho de los hombros.",
"Contrae el core y haz la sentadilla hasta que los muslos queden paralelos.",
"Empuja a través de los talones para volver a la posición de pie.",
"Repite."
],
"tips": [
"Mantén el pecho arriba durante todo el movimiento.",
"Empuja las rodillas hacia afuera en línea con los dedos de los pies."
],
"force_type": "push",
"mechanic": "compound",
"difficulty": "intermediate",
"equipment": "barbell",
"body_part": "upper_legs",
"primary_muscles": [
"gluteus_maximus",
"quadriceps"
],
"secondary_muscles": [
"erector_spinae",
"hamstrings"
],
"goals": [
"hypertrophy",
"strength",
"power"
],
"tags": [
"powerlifting",
"leg_day",
"big_three"
],
"variation_group": "squat",
"is_unilateral": false,
"is_bodyweight": false,
"is_placeholder": false,
"relations": [
{
"to": "banded-squat",
"type": "alternative"
},
{
"to": "banded-squat",
"type": "alternative"
},
{
"to": "db-squat",
"type": "alternative"
},
{
"to": "db-squat",
"type": "alternative"
},
{
"to": "heel-elevated-squat",
"type": "alternative"
},
{
"to": "heel-elevated-squat",
"type": "alternative"
},
{
"to": "smith-machine-squat",
"type": "alternative"
},
{
"to": "trx-squat",
"type": "alternative"
},
{
"to": "trx-squat",
"type": "alternative"
},
{
"to": "jump-squat",
"type": "progression"
},
{
"to": "front-squat",
"type": "progression_of"
},
{
"to": "pause-squat",
"type": "progression_of"
},
{
"to": "stability-ball-wall-squat",
"type": "regression"
},
{
"to": "goblet-squat",
"type": "regression_of"
},
{
"to": "smith-machine-squat",
"type": "regression_of"
}
],
"images": {
"classic": [
"start",
"peak"
],
"flat": [
"start",
"peak"
]
}
} INSERT INTO exercise (id, name, category, difficulty, equipment, body_part)
VALUES ('squat', 'Sentadilla Trasera con Barra', 'strength', 'intermediate', 'barbell', 'upper_legs'); interface Exercise {
id: string;
name: string;
description?: string;
instructions?: string[];
tips?: string[];
category: "strength" | "cardio" | "olympic" | "plyometrics" | "strongman";
difficulty?: "beginner" | "intermediate" | "advanced";
equipment?: string;
body_part?: string;
primary_muscles?: string[];
secondary_muscles?: string[];
goals?: string[];
tags?: string[];
variation_group?: string;
relations?: { to: string; type: "alternative" | "progression_of" | "regression_of" }[];
images?: { classic?: string[]; flat?: string[] };
}
// Per-locale bundle: exercises.es.json — bare `name`/`description`/`instructions`/`tips`,
// plus a top-level `enum_labels` map so you can render category / difficulty /
// body_part / goals / force_type / mechanic without a hand-written translation table:
// bundle.enum_labels.category[ex.category] // e.g. "Kraft"
// Full bundle: exercises.json — fields suffixed _en/_de/_es to ship all languages at once. Sin derechos de autor ambiguos. Sin riesgo DMCA. Alcances de tier claros para que tu equipo legal apruebe en diez minutos.
Sin límites de tasa. Sin suscripción. Cada tier entrega el mismo bundle de 359-exercise — los tiers difieren solo en el alcance de la licencia comercial. Las nuevas ilustraciones se añaden como actualizaciones gratuitas.