hasaneyldrm/exercises-dataset is a dataset project for fitness application developers. It organizes fitness actions into structured JSON and comes with two front-end pages:index.htmlUsed to browse actions,setup.htmlUsed to assist in generating database import SQL, API call examples and back-end development tips.
According to the project README, the current data set covers 1,324 movements, including movement names, body parts, equipment, target muscles, auxiliary muscle groups, and step-by-step instructions. The project is suitable for fitness app prototypes, training planning tools, action search pages, recommendation system experiments, or as basic data when generating fitness API backends for large models.
You need to pay attention to one detail first: warehouse introduction, README,setup.htmland currentdata/exercises.jsonThe descriptions are not entirely consistent. The README clearly states that media images and GIFs are not distributed with the repository;setup.htmlThere is still the old description of “images/videos included”; it may also appear in the current raw JSONimage,gif_urlThis type of relative path field. When actually accessing, the current files in the warehouse should prevail. Do not default that pictures and animation files must be available.
What scene is suitable for
This project is not a complete fitness application, but a data base that can be directly connected to the application. You can understand it into three parts:
data/exercises.json: Core data file, which is what the application ultimately reads.index.html: Local browser version action retrieval tool, no backend required.setup.html: Developer integration wizard, providing database table creation, INSERT SQL generation, API examples and LLM prompt words.
If you just want to quickly view the data, openindex.htmlThat’s enough. If you want to put data into your product, you should start withdata/exercises.jsonTo get started, decide whether to read the JSON directly, import it into a database, or generate a layered REST API.
Installation and download
The easiest way is to clone the repository directly:
|
|
The warehouse itself is mainly static files and does not requirenpm install, and there are no backend services that must be started. After the cloning is completed, the directory will be as follows:
|
|
If you just want to download the data file, you can also save the raw JSON directly:
|
|
Windows PowerShell can be downloaded like this:
|
|
After downloading, it is recommended to confirm whether the file can be parsed normally:
|
|
Available under Windows:
|
|
If an error is reported in this step, it means that the file download is incomplete. First, re-pull the warehouse or re-download the JSON.
Open browser tool locally
warehouseindex.htmlIt is a pure front-end browser that can be opened directly:
|
|
It’s great for quickly checking movement data: search for movement names, filter by body part, machine, or target muscle, and click on a card to view instructions. Because the README has stated that media resources are not distributed with the warehouse, if the image or GIF is empty when browsing, it does not mean that the data loading failed.
If the browser restricts local file reading due to security policies, you can start a temporary static server in the warehouse directory:
|
|
Then visit:
|
|
Node.js users can also use:
|
|
Then press the command line prompt to open the local address.
Use setup.html to generate database and API examples
setup.htmlIt is an integration wizard for developers. Open with andindex.htmlSame:
|
|
Then visit:
|
|
Its process mainly consists of three steps.
The first step is Database Setup. The page can switch database types such as SQL Server, PostgreSQL, MySQL, SQLite, etc., and copy the correspondingCREATE TABLEstatement and generates an INSERT SQL file containing 1,324 action data. This generation process is completed locally in the browser and does not require uploading data.
The second step is API Integration. You can enter your own API base URL, and the page will generate call examples in different languages, including cURL, JavaScript, Python, C#, Java, PHP, and Go. Example interfaces include:
|
|
The interface here is not the online service already provided by the warehouse, but the interface shape that you are recommended to implement in your own backend. That is to say,setup.htmlHelp you organize the calling methods and will not start the API for you.
The third step is Ask Your LLM. Pages can generate prompts based on framework and database combinations, such as Express.js + PostgreSQL, FastAPI + SQLite, Spring Boot + MySQL, ASP.NET Core + SQL Server, Laravel, or Gin. You can paste the prompt words into ChatGPT, Claude or Gemini and let the model generate backend code based on the data structure.
Read JSON directly
If your application is not large in scale, read it directlydata/exercises.jsonis the fastest way. Python example:
|
|
Node.js example:
|
|
In front-end projects, you can put JSON intopublic/data/exercises.json, then usefetchload:
|
|
If using TypeScript, it is recommended to define a conservative type first. Due to differences between README and current JSON fields,image,gif_url,media_id,instruction_stepsSuch fields are best written as optional:
|
|
In this way, even if the warehouse subsequently adjusts fields, the application will not easily crash due to a missing field.
How to import database
For formal projects, it is recommended to import data into the database. The reason is simple: paging, filtering, searching, background editing, and API permission control are all easier to do.
A common table structure can be designed like this:
|
|
PostgreSQL can change JSON fields tojsonb:
|
|
It is recommended that the import process be done in this order:
- use
setup.htmlGenerate table creation SQL and INSERT SQL for the corresponding database. - Execute in the local database or test library first, do not directly import into the production library.
- Checks if the total number of rows is equal to the JSON array length.
- Build index: at least give
category,body_part,equipment,targetAdd a normal index. - If you want to do a keyword search, then consider full-text indexing or external search services.
For example, PostgreSQL can add these indexes first:
|
|
The backend API can first implement four types of interfaces:
|
|
It is recommended that the paging parameters be unified as:
|
|
The response structure can remain stable:
|
|
This makes front-end lists, filters, and infinite scrolling easier to access.
How to deal with media resources
The README tip is important: Do not default to a repository that contains action images and GIFs that are directly commercially available. It states that the underlying data comes from ExerciseDB v1, media assets are not redistributed with the repository, and some records retain media references or relative paths.
There are three processing methods in actual projects:
- Only use text data, do not display images and GIFs.
- Prepare your own legally authorized action pictures or videos before using them
idOr action name to establish mapping. - If you have the right to use ExerciseDB’s media resources, then access the corresponding CDN or resource address according to the relevant terms.
don’t putimage,gif_urlThe field is directly treated as “a file that must exist in the warehouse”. Before accessing, you should check:
|
|
If the directory does not exist, the application must empty the media area or hide the image and animation entries.
Pitfalls that are easy to step on when accessing
First, fields may change. The fields in the README example and raw JSON are not consistent everywhere, so don’t make all fields required in your code. Especially media-related fields and multilingual fields should use optional reads.
Second, the categorical values are in English lowercase style, for examplechest,back,upper legs,body weight. If your front-end displays Chinese, you should do a layer of mapping in the application:
|
|
Third, action instructions are not medical advice. It is suitable for use as product prototypes, teaching content and action retrieval data, but formal fitness products should still include safety tips, contraindications and professional review processes.
Fourth, don’t ignore source and authorization. The README explains the source of the underlying data, reasons for non-distribution of media, and rights statement. ExerciseDB, Kaggle re-host, and the terms of use of the warehouse should be reconfirmed before commercial use.
Recommended route
If you are just doing a demonstration, you can directlygit clone,Openindex.html, and then fromdata/exercises.jsonRead data.
If you want to make a complete fitness application, you can proceed in this order:
- Clone the repository and pin a commit to prevent subsequent field changes from affecting the project.
- examine
data/exercises.jsonActual field and language coverage. - use
setup.htmlGenerate database SQL and import the test library. - accomplish
/exercises,/exercises/:id, filtering and paging APIs. - The front end displays text data, and the media area is first shorted.
- Supplement your own images, GIFs or videos, subject to licensing.
The advantage of this process is that it is simple, controllable, and will not be stuck by media authorization issues.exercises-datasetThe most valuable part is that it organizes fitness action knowledge into a data structure that can be directly read and retrieved; as for media display, training plan logic and personalized recommendations, they should be placed in your own application layer for further improvement.