My fork of the JSON (800+) Exercise Dataset by yuhonas that I use in my
training app LogOut.
All exercises are stored as seperate JSON documents and conform to the
following JSON Schema. Here’s an example :
{
"id": "alternate_incline_dumbbell_curl",
"name": "Alternate Incline Dumbbell Curl",
"force": "pull",
"level": "beginner",
"mechanic": "isolation",
"equipment": "dumbbell",
"primaryMuscles": [
"biceps"
],
"secondaryMuscles": [
"forearms"
],
"instructions": [
"Sit down on an incline bench with a dumbbell in each hand being held at arms length. Tip: Keep the elbows close to the torso.This will be your starting position."
],
"category": "strength",
"images": [
"alternate_incline_dumbbell_curl/0.jpg",
"alternate_incline_dumbbell_curl/1.jpg"
]
}See Alternate Incline Dumbbell Curl JSON file.
To further explore the data, you can use datasette.
Main combined DB exercises.json, translated name and instructions DBs
exercises.<language>.json and translated enums DB i18n.json are available
through GitHub Releases.
For images, you can leverage GitHub's hostinge prefixing image path's contained
in JSON with
https://raw.githubusercontent.com/gfauredev/free-exercise-db/main/exercises/,
eg. air_bike/0.jpg.
There are a number of helpful justfile tasks that you can use.
To lint all the JSON files against the schema.json use
just lintTo check for non-unique IDs, use
just checkIf you make changes to any of the exercises or add new ones, recombine all
single JSON files into a single JSON containing an array of objects, using
the build just task
just buildTo combine all JSON files into Newline Delimeted JSON
suitable for import into PostgreSQL use the following just task
just build-ndjsonSee also Importing JSON into PostgreSQL using COPY
- Allow to know if non-static cardio exercises uses reps, distance or both
force: continuous?
- Host the full repository (all the files) on GitHub Pages (allow using Git LFS)
- Schema:
schema.json - Combined JSON DB:
exercises.json - Internationalized combined JSON DBs:
exercises.$lang.json - Internationalized enum values:
i18n.json - Individual JSON exercises:
exercises/$exercise.json - Individual internationalized exercises:
translations/$lang/$exercise.json - Exercise image(s):
images/$exercise/*.avif
- Schema:
- Move images to a separate directory
images/ - Create a simple
index.htmlexplaining what’s this and how to use it