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/push_ups- Activate Virtual Enviornment
source .venv/bin/activate # ON WINDOWS: .venv\Scripts\activate- Install Python dependencies
cd ..
pip install -r requirements.txt- Start the Flask API Server
cd push_ups
python3 PushUps.py- Clone the repository
git clone https://github.com/YourUsername/GYM-MASTER.git
cd GYM-MASTER- Set up the backend
# Navigate to the backend directory
cd gym-master-backend
# Install dependencies ( helmet is not being used yet btw )
npm install express mongoose dotenv bcrypt jsonwebtoken cors helmet
# 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 # This is used to sign and verify JSON Web Tokens for user authentication (utils/generateToken.js)
JWT_EXPIRE=30d" > .env # Duration (30 Days)- 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!
