A mobile application that allows users to scan gym/training equipment and receive a personalized list of exercises.
How2Lift aims to simplify gym workouts by providing users with appropriate exercises for specific equipment through image recognition technology. Simply scan gym equipment with your phone camera, and the app will identify the equipment and suggest suitable exercises based on user preferences and fitness goals.
- React Native with Expo framework
- NativeWind for styling (TailwindCSS for React Native)
- Expo Router for navigation
- TypeScript
- Expo Camera for equipment scanning
- AsyncStorage for local data persistence
- Spring Boot (Java)
- PostgreSQL database
- Spring AI with OpenAI integration
- Spring Data JPA
- RESTful API architecture
Contains the Spring Boot backend application responsible for:
- Image processing and equipment recognition
- Exercise recommendations logic
- User data management
- API endpoints
- File management for exercise videos and images
Contains the React Native frontend application including:
- User interface components
- Camera integration for equipment scanning
- Exercise visualization and logging
- Exercise and machine search functionality
- User profile management
- Machine Recognition: Scan gym equipment to identify it
- Exercise Library: Access a comprehensive database of exercises
- Muscle Group Navigation: Browse exercises by muscle groups
- Exercise Logging: Track workout progress
- Video Tutorials: Watch proper exercise techniques
- Personalized Recommendations: Get exercise suggestions based on available equipment
- Node.js (v18+)
- Java (JDK 22)
- PostgreSQL
- Android Studio (for Android development)
- Xcode (for iOS development, Mac only)
- OpenAI API key
# Navigate to the frontend directory
cd How2Lift
# Install dependencies
npm install
# Start the development server
npm start# Navigate to the backend directory
cd backend
# Setup environment variables (see .env.example)
# Start the Spring Boot application
./mvnw spring-boot:run- API Documentation - Details on backend endpoints
- Architecture - System architecture overview
- Contributing Guidelines - How to contribute to the project
- Code of Conduct - Community guidelines
We follow a Git Flow inspired branching strategy:
main: Production-ready codedevelop: Integration branch for featuresfeat/*: Feature branches (e.g.,feat/camera-integration)fix/*: Bug fix branches (e.g.,fix/login-issue)
- Create a branch from
developwith appropriate prefix - Work on your task
- Open a pull request to merge with
develop - After code review, merge into
develop - Periodically,
developis merged intomainfor releases