A cutting-edge fitness application that leverages computer vision and machine learning to analyze exercise form in real-time, helping users perfect their technique and prevent injuries.
- Overview
- Key Features
- Technology Stack
- Architecture
- Installation & Setup
- Configuration
- Project Structure
- Usage Guide
- Development
- Contributing
- License
Muscle Intelligence is a sophisticated mobile fitness application designed to revolutionize how users approach their workouts. By combining advanced computer vision algorithms with machine learning models, the app provides real-time feedback on exercise form, identifies muscle groups being targeted, and helps users optimize their training routines while minimizing injury risk.
- Real-Time Form Analysis: Get instant feedback on your exercise technique using advanced pose estimation
- Muscle Group Identification: Automatically detect which muscle groups are being targeted during exercises
- Visual Feedback: Color-coded analysis showing perfect areas, areas needing work, and potential danger zones
- Comprehensive Tracking: Monitor workout history, progress, and body areas targeted over time
- Professional-Grade: Built with modern mobile development best practices and scalable architecture
- Upload & Analyze: Upload workout videos from your device library
- Real-Time Recording: Record exercises directly through the app's camera interface
- Skeleton Detection: Advanced pose estimation with visual skeleton overlay
- Form Scoring: Get detailed feedback on exercise form with color-coded indicators:
- 🟢 Green: Perfect form areas
- 🟠 Orange: Areas needing improvement
- 🔴 Red: Danger zones requiring attention
- Workout History: Comprehensive log of all analyzed workouts
- Body Areas Targeted: Visual breakdown of muscle groups worked over time
- Progress Analytics: Track improvements in form and consistency
- Exercise Library: Browse and learn about different exercises
- Secure Authentication: Powered by Clerk for enterprise-grade security
- User Profiles: Personalized profiles with workout statistics
- Theme Support: Light and dark mode for comfortable viewing
- Device Management: Track and manage connected fitness devices
- Feed: Share progress and achievements with friends
- Community: Connect with other fitness enthusiasts
- React Native
0.75.3- Cross-platform mobile framework - Expo
51.0.32- Development platform and toolchain - React Navigation
6.x- Navigation library (Stack, Bottom Tabs) - React Native Reanimated
3.15.3- Smooth animations - React Native Gesture Handler
2.20.0- Touch gesture handling
- Firebase
10.14.1- Backend-as-a-Service- Firestore - NoSQL database
- Firebase Storage - Video and media storage
- Firebase Authentication (via Clerk integration)
- Clerk
2.2.16- Authentication and user management
- Expo Camera
15.0.16- Camera access and video recording - Expo Image Picker
15.0.7- Image and video selection - Expo AV
14.0.7- Audio/video playback - React Native Video
6.6.4- Video player component
- TensorFlow.js (via ML Playground) - Machine learning models
- Pose Estimation Models - Human pose detection
- Three.js
0.168.0- 3D graphics and visualization - Expo GL
14.0.2- WebGL rendering
- TypeScript (partial) - Type safety
- ESLint - Code linting
- Metro Bundler - React Native bundler
┌─────────────────────────────────────────┐
│ Navigation Container │
├─────────────────────────────────────────┤
│ ┌──────────────┐ ┌─────────────────┐ │
│ │ Auth Stack │ │ Main App Tabs │ │
│ │ │ │ │ │
│ │ • Login │ │ • Home │ │
│ │ • Signup │ │ • Record │ │
│ │ • Verify │ │ • Upload │ │
│ └──────────────┘ │ • Profile │ │
│ └─────────────────┘ │
└─────────────────────────────────────────┘
- User Authentication: Clerk handles authentication → Firebase stores user data
- Video Upload: User selects/records video → Uploaded to Firebase Storage
- Analysis Pipeline: Video processed → ML models analyze form → Results stored in Firestore
- Feedback Display: Analysis results → Visual feedback with skeleton overlay → User insights
- Authentication Layer: Clerk provider wrapping the entire app
- Navigation: Stack navigators for auth, upload flow, and profile sections
- State Management: React hooks and context (ThemeContext)
- Media Processing: Expo Camera and Image Picker for capture/selection
- ML Integration: ML playground models for pose estimation and form analysis
- Node.js >= 18.x
- npm, yarn, or pnpm (project uses pnpm)
- Expo CLI (install globally:
npm install -g expo-cli) - iOS Development: Xcode 14+ (for iOS builds)
- Android Development: Android Studio with Android SDK (for Android builds)
- Firebase Account: For backend services
- Clerk Account: For authentication
git clone <repository-url>
cd Muscle-Intelligence# Using pnpm (recommended)
pnpm install
# Or using npm
npm install
# Or using yarn
yarn installCreate a .env file in the root directory:
EXPO_PUBLIC_CLERK_PUBLISHABLE_KEY=your_clerk_publishable_key
FIREBASE_API_KEY=your_firebase_api_key
FIREBASE_AUTH_DOMAIN=your_firebase_auth_domain
FIREBASE_PROJECT_ID=your_firebase_project_id
FIREBASE_STORAGE_BUCKET=your_firebase_storage_bucket
FIREBASE_MESSAGING_SENDER_ID=your_firebase_messaging_sender_id
FIREBASE_APP_ID=your_firebase_app_id- Create a Firebase project at Firebase Console
- Enable Firestore Database
- Enable Firebase Storage
- Update
firebase/firebaseConfig.jswith your Firebase credentials - Deploy Firestore rules from
firestore.rules - Deploy Firestore indexes from
firestore.indexes.json
- Create a Clerk account at Clerk
- Create a new application
- Copy your publishable key to
.env - Configure authentication methods (Email, Social, etc.)
cd ios
pod install
cd ..# Start Expo development server
npm start
# or
pnpm start
# or
yarn start- iOS: Press
iin the terminal or scan QR code with Expo Go app - Android: Press
ain the terminal or scan QR code with Expo Go app - Web: Press
win the terminal
{
"expo": {
"name": "muscle-intelligence",
"slug": "muscle-intelligence",
"version": "1.0.0",
"orientation": "portrait",
"ios": {
"bundleIdentifier": "com.yourcompany.muscleintelligence"
},
"android": {
"package": "com.yourcompany.muscleintelligence"
}
}
}Update firebase/firebaseConfig.js with your Firebase project credentials.
The app uses React Navigation with:
- Bottom Tab Navigator: Main app navigation (Home, Record, Upload, Profile)
- Stack Navigators:
- Auth Stack (Login, Signup, Verification)
- Upload Stack (Upload flows for different analysis types)
- Profile Stack (Profile and sub-screens)
Muscle-Intelligence/
├── android/ # Android native code
│ ├── app/
│ └── build.gradle
├── ios/ # iOS native code
│ ├── postureAI/
│ └── Podfile
├── assets/ # Static assets (images, videos, GIFs)
│ ├── *.gif # Exercise demonstration GIFs
│ └── *.jpg # Icons and images
├── firebase/ # Firebase configuration
│ ├── firebaseConfig.js # Firebase initialization
│ ├── firestore.js # Firestore utilities
│ └── firebaseStorage.js # Storage utilities
├── hooks/ # Custom React hooks
│ └── useProtectedRoute.js
├── ml_playground/ # ML models and playground
│ └── posts_code/ # Pose estimation models
├── screens/ # Application screens
│ ├── auth/ # Authentication screens
│ │ ├── LoginScreen.js
│ │ ├── SignupScreen.js
│ │ └── VerificationScreen.js
│ ├── home/ # Home feed
│ │ └── HomeScreen.js
│ ├── record/ # Video recording
│ │ └── RecordScreen.js
│ ├── upload/ # Video upload and analysis
│ │ ├── UploadBetta.js
│ │ ├── UploadAlpha.js
│ │ ├── UploadGamma.js
│ │ ├── LoadingBettaOne.js
│ │ ├── LoadingBettaTwo.js
│ │ ├── LoadingAlphaOne.js
│ │ ├── LoadingAlphaTwo.js
│ │ ├── SkeletonBetta.js
│ │ ├── SkeletonAlpha.js
│ │ ├── FinalBetta.js
│ │ ├── FinalAlpha.js
│ │ └── StasSample.js
│ ├── profile/ # User profile and settings
│ │ ├── ProfileScreen.js
│ │ ├── WorkoutHistoryScreen.js
│ │ ├── BodyAreasTargetedScreen.js
│ │ ├── ProgressScreen.js
│ │ ├── SettingsScreen.js
│ │ ├── DevicesConnectedScreen.js
│ │ └── ThemeContext.js
│ ├── Button.js
│ ├── ExerciseLibraryScreen.js
│ ├── OnboardingScreen.js
│ ├── PostureAnalysisScreen.js
│ └── ProtectedScreen.js
├── App.js # Main application entry point
├── app.config.js # Expo configuration
├── app.json # App metadata
├── config.json # Additional configuration
├── package.json # Dependencies and scripts
├── firestore.rules # Firestore security rules
└── firestore.indexes.json # Firestore indexes
- Sign Up/Login: Create an account or sign in using Clerk authentication
- Onboarding: Complete the initial setup process
- Grant Permissions: Allow camera and storage access when prompted
- Navigate to the Record tab
- Tap the camera button to start recording
- Position yourself in frame
- Perform your exercise
- Stop recording when finished
- The video will be automatically analyzed
- Navigate to the Upload tab
- Tap "Upload Video"
- Select a video from your device library
- Wait for processing (video is converted to GIF format)
- View the analysis results with:
- Skeleton overlay showing pose detection
- Color-coded feedback on form
- Muscle groups targeted
- Areas needing improvement
- Navigate to Profile tab
- Access:
- Workout History: View all past workouts
- Body Areas Targeted: See muscle group breakdown
- Progress: Track improvements over time
- Settings: Customize app preferences
- 🟢 Green Areas: Perfect form - keep doing what you're doing!
- 🟠 Orange Areas: Needs work - focus on improving technique
- 🔴 Red Areas: Danger zone - incorrect form that could lead to injury
# Start development server
npm start
# Run on iOS simulator
npm run ios
# Run on Android emulator
npm run android
# Run on web
npm run web- Follow React Native best practices
- Use functional components with hooks
- Maintain consistent naming conventions
- Add comments for complex logic
- Create feature branch:
git checkout -b feature/your-feature - Implement changes following existing patterns
- Test on both iOS and Android
- Update documentation if needed
- Submit pull request
# Run tests (when test suite is added)
npm test# Build iOS
expo build:ios
# Build Android
expo build:android
# Or use EAS Build
eas build --platform ios
eas build --platform androidWe welcome contributions! Please follow these steps:
- Fork the repository
- Create a 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
- Write clear, descriptive commit messages
- Follow the existing code style
- Add tests for new features
- Update documentation as needed
- Ensure all tests pass before submitting
This project is private and proprietary. All rights reserved.
- React Native Documentation
- Expo Documentation
- Firebase Documentation
- Clerk Documentation
- React Navigation
For issues, questions, or contributions, please open an issue on the repository or contact the development team.
- Real-time form analysis during recording
- Exercise recommendations based on progress
- Social sharing and community features
- Integration with fitness wearables
- Advanced analytics and insights
- Custom workout plan generation
- Multi-exercise analysis in single session
- Export workout data
- Integration with popular fitness apps
Built with ❤️ using React Native and Expo
Helping you achieve perfect form, one rep at a time.