A cutting-edge fitness application that combines AI coaching, real-time form correction, and social competition to transform your workout experience.
Our application follows a modern, microservices architecture:
βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ
β β β β β β
β Mobile App βββββββΊβ AI Coach βββββββΊβ Backend Servicesβ
βReact Native+Expoβ β TensorFlow+GTTS β | Node.js+MongoDB β
β β β β β β
ββββββββββ¬βββββββββ βββββββββββββββββββ βββββββββ-β¬ββββββββ
β β
β β
βΌ βΌ
βββββββββββββββββββ ββββββββββββββββββ-β
β β β β
β Competition β ββββββββββββββββββββββββββββΊ β Analytics |
β System β β Platform β
β WebRTC+Socket.ioβ βFirebase Analyticsβ
β β β β
βββββββββββββββββββ ββββββββββββββββββ-β
- π± Mobile Application: User-friendly interface with exercise tracking and gamification
- π€ AI Coach: Real-time pose estimation and form correction
- π£οΈ Voice Coaching: Audio feedback during workouts
- π Competition System: Challenge friends with dual-phone battles
- π Progress Tracking: Comprehensive metrics and achievements
- π User Authentication: Secure account management
- π Rewards System: Gamified workout experience with achievements
- React with React Router
- Bootstrap for responsive UI
- Axios for API communication
- Context API for state management
- Node.js server with Express
- MongoDB database
- JWT authentication
- RESTful API architecture
- Flask for the API server
- MediaPipe for pose detection
- Scikit-learn (MLP) for push-up classification
- OpenCV for image processing
- WebRTC for video streaming
- Socket.io for real-time communication
- COMPETITIVE SYSTEM (Coming Soon)
- Firebase Analytics
- Node.js v14+ and npm
- MongoDB (local installation or MongoDB Atlas)
- Git
- Navigate to push_ups root
cd ExcersiseDetection- Create Virtual Enviornment (if not already made)
python -m venv .venv- Activate Virtual Enviornment
source .venv/bin/activate # ON WINDOWS: .venv\Scripts\activate- Install Python dependencies
pip install -r requirements.txt- Start the Flask API Server
cd push_ups
python3 PushUps.py-
Start New Termnial
-
Set up the backend
# Navigate to the backend directory
cd gym-master-backend
# Create virtual enviornmemt (for backend)
python -m venv myenv
# Activate virtual enviornment (for backend)
source myenv/bin/activate # ON WINDOWS: myvenv\Scripts\activate
# Install dependencies
pip install -r requirements.txt
# Create .env file for configuration
echo 'PORT=5001
MONGODB_URI=mongodb+srv://gym-master:<ASK_FOR_PASSWORD>@gym-master.vjykr.mongodb.net/?appName=gym-master
JWT_SECRET=your_jwt_secret_key
JWT_EXPIRE=30d' > .env # Duration 30 Days (JWT)- Start the backend server
# Start the server
node src/server.js
# You should see output indicating the server is running on port 5001
# and MongoDB is connected-
Open a new terminal window/tab
-
Set up the frontend
# Navigate to the frontend directory from the project root
cd gym-master-frontend
# Install dependencies
npm install- Start the frontend development server
# Start the development server
npm start
# This will open the application in your browser at http://localhost:3000- Register a new account through the registration page
- Log in with your credentials
- Navigate through the application using the menu:
- Dashboard: Overview of your fitness activity
- Profile: Update your personal information
- Progress: Track and add new workouts
- Rewards: View achievements and badges
Our backend provides the following RESTful endpoints:
POST /api/auth/register- Create a new user accountPOST /api/auth/login- Authenticate a user
GET /api/users/profile- Get user profilePUT /api/users/profile- Update user profile
POST /api/progress- Record a new workoutGET /api/progress- Get workout historyGET /api/progress/:id- Get specific workout details
GET /api/rewards- List all available rewardsGET /api/rewards/user- Get user's earned rewardsPOST /api/rewards/check- Check for new earned rewards
- If port 5001 is already in use, change the PORT in .env file
- Verify MongoDB is running locally or your connection string is correct
- Check server logs for specific error messages
- Make sure the backend server is running before starting the frontend
- Check browser console for any error messages
- Verify the API base URL in
src/utils/api.jsmatches your backend URL
We welcome contributions to GYM-MASTER! Please follow these steps:
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Commit your changes:
git commit -m 'Add some amazing feature' - Push to the branch:
git push origin feature/amazing-feature - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
LETS GO JIM!
