Merge remote-tracking branch 'origin/main' into pr45

# Conflicts:
#	README.md
This commit is contained in:
Hasan Emir Yıldırım
2026-07-16 09:45:08 +03:00
5 changed files with 13036 additions and 1340 deletions
+14 -8
View File
@@ -11,12 +11,12 @@
<img src="videos/0334-DsgkuIt.gif" width="120" alt="dumbbell lateral raise" /> <img src="videos/0334-DsgkuIt.gif" width="120" alt="dumbbell lateral raise" />
</p> </p>
**A comprehensive, ready-to-use fitness exercise dataset with 1,324 exercises — each with an animation GIF, 180×180 thumbnail image, category, body-part, equipment, target and muscle-group data, and step-by-step instructions in 9 languages (English, Spanish, Italian, Turkish, Russian, Chinese, Hindi, Polish, Korean).** **A comprehensive, ready-to-use fitness exercise dataset with 1,324 exercises — each with an animation GIF, 180×180 thumbnail image, category, body-part, equipment, target and muscle-group data, and step-by-step instructions in 10 languages (English, Spanish, Italian, Turkish, Russian, Chinese, Hindi, Polish, Korean, French).**
[![Exercises](https://img.shields.io/badge/Exercises-1324-blue?style=flat-square)](data/exercises.json) [![Exercises](https://img.shields.io/badge/Exercises-1324-blue?style=flat-square)](data/exercises.json)
[![Animation GIFs](https://img.shields.io/badge/Animation%20GIFs-1324-brightgreen?style=flat-square)](videos/) [![Animation GIFs](https://img.shields.io/badge/Animation%20GIFs-1324-brightgreen?style=flat-square)](videos/)
[![Thumbnails](https://img.shields.io/badge/Thumbnails-1324-orange?style=flat-square)](images/) [![Thumbnails](https://img.shields.io/badge/Thumbnails-1324-orange?style=flat-square)](images/)
[![Languages](https://img.shields.io/badge/Languages-9-green?style=flat-square)](#-overview) [![Languages](https://img.shields.io/badge/Languages-10-green?style=flat-square)](#-overview)
[![Mobile App](https://img.shields.io/badge/App-LogPress-111111?style=flat-square&logo=react)](https://github.com/hasaneyldrm/logpress-public) [![Mobile App](https://img.shields.io/badge/App-LogPress-111111?style=flat-square&logo=react)](https://github.com/hasaneyldrm/logpress-public)
[![License](https://img.shields.io/badge/License-MIT%20%2B%20media%20terms-blue?style=flat-square)](LICENSE) [![License](https://img.shields.io/badge/License-MIT%20%2B%20media%20terms-blue?style=flat-square)](LICENSE)
@@ -32,7 +32,7 @@
- 1,324 exercises with category, body-part, equipment, target and muscle-group data - 1,324 exercises with category, body-part, equipment, target and muscle-group data
- an animation GIF + 180×180 thumbnail for every exercise (media © [Gym visual](https://gymvisual.com/) — see [License](#-license--use)) - an animation GIF + 180×180 thumbnail for every exercise (media © [Gym visual](https://gymvisual.com/) — see [License](#-license--use))
- step-by-step instructions in 9 languages (🇬🇧 English, 🇪🇸 Spanish, 🇮🇹 Italian, 🇹🇷 Turkish, 🇷🇺 Russian, 🇨🇳 Chinese, 🇮🇳 Hindi, 🇵🇱 Polish, 🇰🇷 Korean) - step-by-step instructions in 10 languages (🇬🇧 English, 🇪🇸 Spanish, 🇮🇹 Italian, 🇹🇷 Turkish, 🇷🇺 Russian, 🇨🇳 Chinese, 🇮🇳 Hindi, 🇵🇱 Polish, 🇰🇷 Korean, 🇫🇷 French)
- the interactive browser (`index.html`) and developer setup guide (`setup.html`) - the interactive browser (`index.html`) and developer setup guide (`setup.html`)
--- ---
@@ -71,7 +71,7 @@ Each exercise entry contains:
| Muscle Group | Supporting / synergist muscles | | Muscle Group | Supporting / synergist muscles |
| Equipment | Equipment required (or `body weight` for bodyweight) | | Equipment | Equipment required (or `body weight` for bodyweight) |
| Instructions | Step-by-step instructions for each exercise | | Instructions | Step-by-step instructions for each exercise |
| Available Languages | 🇬🇧 English · 🇪🇸 Spanish · 🇮🇹 Italian · 🇹🇷 Turkish · 🇷🇺 Russian · 🇨🇳 Chinese · 🇮🇳 Hindi · 🇵🇱 Polish · 🇰🇷 Korean | | Available Languages | 🇬🇧 English · 🇪🇸 Spanish · 🇮🇹 Italian · 🇹🇷 Turkish · 🇷🇺 Russian · 🇨🇳 Chinese · 🇮🇳 Hindi · 🇵🇱 Polish · 🇰🇷 Korean · 🇫🇷 French |
| Media | 180×180 thumbnail (`image`) + animation GIF (`gif_url`) per exercise — media © Gym visual, see [License](#-license--use) | | Media | 180×180 thumbnail (`image`) + animation GIF (`gif_url`) per exercise — media © Gym visual, see [License](#-license--use) |
--- ---
@@ -88,7 +88,7 @@ A fully client-side exercise explorer with:
- Live search across all 1,324 exercises - Live search across all 1,324 exercises
- Filter by category, equipment, and target muscle - Filter by category, equipment, and target muscle
- Infinite scroll grid - Infinite scroll grid
- Click any card to see full details and instructions in English, Spanish, Italian, Turkish, Russian, Chinese, Hindi, Polish, or Korean - Click any card to see full details and instructions in English, Spanish, Italian, Turkish, Russian, Chinese, Hindi, Polish, Korean, or French
### `setup.html` — Developer Setup Guide ### `setup.html` — Developer Setup Guide
@@ -131,7 +131,7 @@ exercises-dataset/
| Metric | Count | | Metric | Count |
|---|---| |---|---|
| Total Exercises | **1,324** | | Total Exercises | **1,324** |
| Instruction Languages | **9** | | Instruction Languages | **10** |
### Exercises by Body Part ### Exercises by Body Part
@@ -189,7 +189,8 @@ Each record in `data/exercises.json` follows this structure. A machine-readable
| `instructions.hi` | `string` | Full step-by-step instructions in Hindi | | `instructions.hi` | `string` | Full step-by-step instructions in Hindi |
| `instructions.pl` | `string` | Full step-by-step instructions in Polish | | `instructions.pl` | `string` | Full step-by-step instructions in Polish |
| `instructions.ko` | `string` | Full step-by-step instructions in Korean | | `instructions.ko` | `string` | Full step-by-step instructions in Korean |
| `instruction_steps.<lang>` | `array[string]` | Same instructions split into an ordered array of steps, per language (`en`, `es`, `it`, `tr`, `ru`, `zh`, `hi`, `pl`, `ko`) | | `instructions.fr` | `string` | Full step-by-step instructions in French |
| `instruction_steps.<lang>` | `array[string]` | Same instructions split into an ordered array of steps, per language (`en`, `es`, `it`, `tr`, `ru`, `zh`, `hi`, `pl`, `ko`, `fr`) |
| `muscle_group` | `string` | Primary synergist muscle group | | `muscle_group` | `string` | Primary synergist muscle group |
| `secondary_muscles` | `array[string]` | Additional muscles involved | | `secondary_muscles` | `array[string]` | Additional muscles involved |
| `target` | `string` | Primary target muscle (e.g. `"biceps"`, `"pectoralis major"`) | | `target` | `string` | Primary target muscle (e.g. `"biceps"`, `"pectoralis major"`) |
@@ -217,7 +218,8 @@ Each record in `data/exercises.json` follows this structure. A machine-readable
"zh": "平躺,膝盖弯曲,双脚平放在地上。...", "zh": "平躺,膝盖弯曲,双脚平放在地上。...",
"hi": "अपने घुटनों को मोड़कर और पैरों को ज़मीन पर सपाट रखते हुए अपनी पीठ के बल लेट जाएँ।...", "hi": "अपने घुटनों को मोड़कर और पैरों को ज़मीन पर सपाट रखते हुए अपनी पीठ के बल लेट जाएँ।...",
"pl": "Połóż się płasko na plecach, ugnij kolana i oprzyj stopy płasko na pod ...", "pl": "Połóż się płasko na plecach, ugnij kolana i oprzyj stopy płasko na pod ...",
"ko": "등을 바닥에 누워 무릎을 구부리고 발을 바닥에 붙입니다. ..." "ko": "등을 바닥에 누워 무릎을 구부리고 발을 바닥에 붙입니다. ...",
"fr": "Allonge-toi sur le dos, les genoux fléchis et les pieds à plat au sol. ..."
}, },
"muscle_group": "hip flexors", "muscle_group": "hip flexors",
"secondary_muscles": ["hip flexors", "lower back"], "secondary_muscles": ["hip flexors", "lower back"],
@@ -335,6 +337,7 @@ print(ex["instructions"]["zh"]) # Chinese
print(ex["instructions"]["hi"]) # Hindi print(ex["instructions"]["hi"]) # Hindi
print(ex["instructions"]["pl"]) # Polish print(ex["instructions"]["pl"]) # Polish
print(ex["instructions"]["ko"]) # Korean print(ex["instructions"]["ko"]) # Korean
print(ex["instructions"]["fr"]) # French
``` ```
### Python — Load with Pandas ### Python — Load with Pandas
@@ -386,6 +389,7 @@ console.log(ex.instructions.zh); // Chinese
console.log(ex.instructions.hi); // Hindi console.log(ex.instructions.hi); // Hindi
console.log(ex.instructions.pl); // Polish console.log(ex.instructions.pl); // Polish
console.log(ex.instructions.ko); // Korean console.log(ex.instructions.ko); // Korean
console.log(ex.instructions.fr); // French
``` ```
### TypeScript — Type-safe Usage ### TypeScript — Type-safe Usage
@@ -407,6 +411,7 @@ interface Exercise {
hi: string; hi: string;
pl: string; pl: string;
ko: string; ko: string;
fr: string;
}; };
instruction_steps: { instruction_steps: {
en: string[]; en: string[];
@@ -418,6 +423,7 @@ interface Exercise {
hi: string[]; hi: string[];
pl: string[]; pl: string[];
ko: string[]; ko: string[];
fr: string[];
}; };
muscle_group: string; muscle_group: string;
secondary_muscles: string[]; secondary_muscles: string[];
+13006 -1324
View File
File diff suppressed because it is too large Load Diff
+12 -4
View File
@@ -17,9 +17,13 @@
"it": { "type": "string" }, "it": { "type": "string" },
"tr": { "type": "string" }, "tr": { "type": "string" },
"ru": { "type": "string" }, "ru": { "type": "string" },
"zh": { "type": "string" } "zh": { "type": "string" },
"hi": { "type": "string" },
"pl": { "type": "string" },
"ko": { "type": "string" },
"fr": { "type": "string" }
}, },
"required": ["en", "es", "it", "tr", "ru", "zh"], "required": ["en", "es", "it", "tr", "ru", "zh", "hi", "pl", "ko", "fr"],
"additionalProperties": { "type": "string" } "additionalProperties": { "type": "string" }
}, },
"languageStepsMap": { "languageStepsMap": {
@@ -31,9 +35,13 @@
"it": { "$ref": "#/$defs/steps" }, "it": { "$ref": "#/$defs/steps" },
"tr": { "$ref": "#/$defs/steps" }, "tr": { "$ref": "#/$defs/steps" },
"ru": { "$ref": "#/$defs/steps" }, "ru": { "$ref": "#/$defs/steps" },
"zh": { "$ref": "#/$defs/steps" } "zh": { "$ref": "#/$defs/steps" },
"hi": { "$ref": "#/$defs/steps" },
"pl": { "$ref": "#/$defs/steps" },
"ko": { "$ref": "#/$defs/steps" },
"fr": { "$ref": "#/$defs/steps" }
}, },
"required": ["en", "es", "it", "tr", "ru", "zh"], "required": ["en", "es", "it", "tr", "ru", "zh", "hi", "pl", "ko", "fr"],
"additionalProperties": { "$ref": "#/$defs/steps" } "additionalProperties": { "$ref": "#/$defs/steps" }
}, },
"steps": { "steps": {
+3 -3
View File
File diff suppressed because one or more lines are too long
+1 -1
View File
@@ -1401,7 +1401,7 @@ function buildLlmPrompt(fwKey, dbKey) {
## Dataset Overview ## Dataset Overview
- 1,324 fitness exercises - 1,324 fitness exercises
- Fields: id (string, e.g. "0001"), name, category, body_part, equipment, instructions_en (full text), instructions_es (Spanish text), instructions_it (Italian text), instructions_tr (Turkish text), instructions_ru (Russian text), instructions_zh (Chinese text), instructions_hi (Hindi text), instructions_pl (Polish text), instructions_ko (Korean text), muscle_group, secondary_muscles (JSON array of strings), target, image (relative path like "images/0001.jpg"), gif_url (relative path like "videos/0001.gif"), created_at - Fields: id (string, e.g. "0001"), name, category, body_part, equipment, instructions_en (full text), instructions_es (Spanish text), instructions_it (Italian text), instructions_tr (Turkish text), instructions_ru (Russian text), instructions_zh (Chinese text), instructions_hi (Hindi text), instructions_pl (Polish text), instructions_ko (Korean text), instructions_fr (French text), muscle_group, secondary_muscles (JSON array of strings), target, image (relative path like "images/0001.jpg"), gif_url (relative path like "videos/0001.gif"), created_at
## Database Schema (${db.name}) ## Database Schema (${db.name})
\`\`\`sql \`\`\`sql