yuhonas /free-exercise-db

Open Public Domain Exercise Dataset in JSON format, over 800 exercises with a browsable public searchable frontend

★ 2,121⑂ 536👁 30⑃ 19● 16▤ 0◈ 0
VueUnlicenseCreated 2023-03-30yuhonas.github.io/free-exercise-db/
2,121
stars
+3
536
forks
30
watchers
19
prs
16
issues
0
releases
0
discussions

README

Free Exercise DB 💪      

Open Public Domain Exercise Dataset in JSON format, 800+ exercises with a browsable public searchable frontend

 Why?

I started building another fitness related app and was looking for free/open source exercise lists and imagery I stumbled upon
exercises.json which was amazing though the data wasn't structured the way I wanted it and I also wanted a browsable/searchable frontend to the data inspired by this issue so I restructured the data and built a simple frontend to it :)

 What do they look like?

All exercises are stored as seperate JSON documents and conform to the following JSON Schema eg.

json
{
  "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

To further explore the data, you can use lite.datasette.io

 How do I use them?

You can check the repo out and use the JSON files and images locally

 Alternatively

You can leverage github's hosting and access the single or combined exercises.json and prefix any of image path's contained in the JSON with https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/ to get a hosted version of the image eg. Air_Bike/0.jpg or leverage something like imagekit.io for dynamic image resizing which is utlized on the frontend  example site 

 Build tasks
There are a number of helpful Makefile tasks that you can utilize

 Linting
To lint all the JSON files against the schema.json use


make lint


 Combining into a single JSON file
If you make changes to any of the exercises or add new ones, to recombine all single JSON files into a single JSON containing an array of objects using the following make task

sh
make dist/exercises.json

_Note: requires jq_

 Importing into PostgreSQL
To combine all JSON files into Newline Delimeted JSON suitable for import into PostgreSQL use the following make task

sh
make dist/exercises.nd.json

_Note: requires jq_

See also Importing JSON into PostgreSQL using COPY

 Browsable frontend



There is a simple searchable/browsable frontend to the data written in Vue.js  available at yuhonas.github.io/free-exercise-db all related code is in the site directory


 Setup

sh
npm install


 Compile and Hot-Reload for Development

sh
npm run dev


 Compile and Minify for Production

sh
npm run build


 Run Unit Tests with Vitest

sh
npm run test:unit


 Run End-to-End Tests with Cypress

sh
npm run test:e2e:dev


This runs the end-to-end tests against the V

Top issues

Snapshot: 2026-11-10T09:35:25Z · Data license Apache-2.0 · JSON