reactjs18-fitness

Zexercise Fitness App powered by RapidAPI that allows you to browse more than 1300 exercises - using React 18 best practices, and a beautiful UI using the Material UI ⚛

MIT License

Stars
3

📔 Table of Contents

🌟 About the Project

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.

‼️ Folder Structure

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.

public

index.html - manifest.json

The public folder contains the HTML file so you can tweak it, for example, to set the page title. The tag with the compiled code will be added to it automatically during the build process.

src

components

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).

pages

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.

utils

fetchData.js - Fetching data from sources using RapidAPI using environment variables for API keys.

🔑 Environment Variables

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.

👾 Tech Stack

🧰 Getting Started

⚙️ Installation

Step 1:

Download or clone this repo by using the link below:

 https://github.com/ladunjexa/Zexercise-Fitness-App

Step 2:

Explorium using NPM (Node Package Manager), therefore, make sure that Node.js is installed by execute the following command in console:

  node -v

Step 3:

At the main folder execute the following command in console to get the required dependencies:

  npm install

Step 4:

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>

🏃 Run Locally

Step 1:

At the main folder execute the following command in console to get the required dependencies:

  npm start

👋 Contributing

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!

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

⚠️ License

Distributed under the MIT License. See LICENSE.txt for more information.

🤝 Contact

Liron Abutbul - @lironabutbul6 - @ladunjexa

Project Link: https://github.com/ladunjexa/Zexercise-Fitness-App

💎 Acknowledgements

This section used to mention useful resources and libraries that used in Zexercise