yuhonas / free-exercise-db
git clone https://github.com/yuhonas/free-exercise-db.git
🔥 on GitHub Trending today
Open Public Domain Exercise Dataset in JSON format, over 800 exercises with a browsable public searchable frontend
—
stars, 24h
—
stars, 7 days
+135
stars, 30 days · #1,741
2.0k
★ total
521
forks · 11 open issues
Star history starts 2026-10-20; the chart appears after the second daily snapshot.
LanguageVue
LicenseUnlicense
Created2023-03-30 (3y ago)
Last push23d ago
Watchers29
OwnerUser
Seen on GitHub Trending
- 2026-10-20 — #10 monthly in vue · +135 ★
GitHub topics
Links
- GitHub: github.com/yuhonas/free-exercise-db
- Homepage: https://yuhonas.github.io/free-exercise-db/
- Releases · Issues · Hacker News mentions
README excerpt
## 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. [code] 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 [code] #### 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 [code] _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 [code] _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 [code] #### Compile and Hot-Reload for Development [code] #### Compile and Minify for Production [code] #### Run Unit Tests with Vitest [code] #### Run End-to-End Tests with Cypress [code] This runs the end-to-end tests against the Vite development server. It is much faster than the production build. But it's still recommended to test the production build with `test:e2e` before deploying (e.g. in CI environments): [code] #### Lint with ESLint [code] ### TODO #### Incomplete fields The following fields are incomplete in _some_ `JSON` files and in such have had to allow `null` in schema.json * force * mechanic * equipment #### Images There are also a small number of duplicate images eg. [code] ### Contributors Made with contrib.rocks. Contributions are always welcome! Please read the contribution guidelines first. ### Special Thanks 🙇 * Ollie Jennings for the original dataset at exer