Zexercise is a modern Fitness Exercises App with beautiful UI using the Material UI
Zexercise is a Fitness Exercises App with the functionality to choose exercise categories and specific muscle groups, browse 1,300 exercises with practical examples, pagination, exercise detail, pull related videos from youtube, display similar exercises, and much more - based on YouTube Search and Download & Exercise DB APIs powered by RapidAPI.
Here is the folder structure of Zexercise.
Zexercise-Fitness-App/
|- public/
|- src/
|-- assets/
|-- components/
|-- pages/
|-- utils/
Now, lets dive into the public and src folders.
index.html
- manifest.json
The public folder contains the HTML file so you can tweak it, for example, to set the page title. The <script> tag with the compiled code will be added to it automatically during the build process.
BodyPart.js
- Detail.js
- ExerciseCard.js
- ExerciseVideos.js
- Exercises.js
- Footer.js
- HeroBanner.js
- HorziontalScrollbar.js
- Loader.js
- Navbar.js
- SearchExercises.js
- SimilarExercises.js
JS files contain Zexercise components which split the UI into independent and reusable pieces.
BodyPart.js
- This component displays exercise category used for muscle groups search.
Detail.js
- This component displays exercise detail used for any exercise page.
ExerciseCard.js
- This component displays exercise card with the body part, target muscle and name that links to related exercise page.
ExerciseVideos.js
- This component displays a box of exercise video with the video title, channel name, and thmubnail.
Exercises.js
- This component displays the list of exercises by fetching data according to user-input using ExerciseCard widget.
Footer.jsx
, Navbar.jsx
- This components displays the Navigation Bar & Footer.
HeroBanner.js
- This component displays a beautiful HeroBanner with quotes.
HorizontalScrollbar.js
- This component handle the Horizontal Scrollbar widget logic used for many components, built with react-horizontal-scrolling-menu
dependency.
SearchExercises.js
- This component display the search box and handle search logic.
SimilarExercises.js
- This component display a similar exercises by target muscle used for any exercise page.
Loader.js
- InfinitySpan loadig component for display while waiting to fetch the result from the APIs using react-loader-spinner
package.
Results.jsx
- Results component handles the display form of the fetched results, that is, widgets for the various links.
Router.jsx
- Router component enables the navigation among views of various components in application.
Search.jsx
- Search components (includes search field, search button and classification links).
ExerciseDetail.js
- Implementation of dynamic Exercise Detail page which explore exercise detail, videos and similar exercises.
Home.js
- Implementation of Home page, where the user can search for exercises according to data types (name, target muscle, equipment or body part) and explore a preview of the exercises found.
fetchData.js
- Fetching data from sources using RapidAPI using environment variables for API keys.
In order to use Zexercise you have to create your YouTube Search and Download & Exercise DB api key powered by RapidAPI here, to run this web app, you will need to add the following environment variable to your .env file
REACT_APP_RAPID_API_KEY
REACT_APP_RAPID_YOUT_API_KEY
The variable can be combined when using a single API key, the fetchData file must be updated accordingly.
Download or clone this repo by using the link below:
https://github.com/ladunjexa/Zexercise-Fitness-App
Explorium using NPM (Node Package Manager), therefore, make sure that Node.js is installed by execute the following command in console:
node -v
At the main folder execute the following command in console to get the required dependencies:
npm install
Within the main folder create a file named .env
and add the following environment variable:
REACT_APP_RAPID_API_KEY=<YOUR_EXERCISE_DB_API_KEY>
REACT_APP_RAPID_YOUT_API_KEY=<YOUR_YOUTUBE_SEARCH_AND_DOWNLOAD_API_KEY>
At the main folder execute the following command in console to get the required dependencies:
npm start
Contributions are always welcome!
See contributing.md
for ways to get started.
Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.
If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature
) - Commit your Changes (
git commit -m 'Add some AmazingFeature'
) - Push to the Branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
Distributed under the MIT License. See LICENSE.txt for more information.
Liron Abutbul - @lironabutbul6 - @ladunjexa
Project Link: https://github.com/ladunjexa/Zexercise-Fitness-App
This section used to mention useful resources and libraries that used in Zexercise
- RapidAPI
- MaterialUI
- #JSMastery