A modern, cross-platform workout tracking mobile app built with React Native and Expo. Track your workouts, monitor your progress, and stay motivated on your fitness journey.
- Create Custom Workouts: Design personalized workout routines with multiple exercises
- Track Sets & Reps: Record weight, reps, and sets for each exercise
- Workout History: View your complete workout history with detailed statistics
- Progress Monitoring: Track your fitness journey over time
- Cross-Platform: Works on both iOS and Android devices
- Offline-First: All data is stored locally on your device
- Modern UI: Clean, intuitive interface with smooth animations
- Framework: React Native 0.79.5 with Expo 53
- Navigation: Expo Router with file-based routing
- Storage: AsyncStorage for local data persistence
- Icons: Lucide React Native icons
- Language: TypeScript for type safety
- Styling: React Native StyleSheet
- React 19.0.0
- React Native 0.79.5
- Expo SDK 53
- TypeScript 5.8.3
- Expo Router 5.1.2
- React Navigation (Bottom Tabs)
- Lucide React Native (Icons)
- React Native Gesture Handler
- React Native Reanimated
- AsyncStorage 2.1.2
- React Native Safe Area Context
- Node.js (v18 or later)
- npm or yarn
- Expo CLI
- iOS Simulator (for iOS development) or Android Emulator
-
Clone the repository
git clone https://github.com/Neilsmahajan/workout-tracker.git cd workout-tracker -
Install dependencies
npm install # or yarn install -
Start the development server
npm run dev # or yarn dev -
Run on your device
- Install the Expo Go app on your phone
- Scan the QR code displayed in the terminal
- Or press
ifor iOS simulator,afor Android emulator
app/
├── (tabs)/ # Tab-based navigation
│ ├── index.tsx # Home/Workouts screen
│ ├── history.tsx # Workout history
│ └── profile.tsx # User profile
├── exercise/ # Exercise management
│ └── [...params].tsx # Dynamic exercise routes
├── workout/ # Workout details
│ └── [id].tsx # Individual workout view
└── _layout.tsx # Root layout
components/
├── DumbbellIcon.tsx # Custom dumbbell icon
types/
└── workout.ts # TypeScript interfaces
utils/
└── storage.ts # Local storage utilities
The app uses a simple, efficient data structure:
interface Workout {
id: string;
name: string;
date?: string;
exercises: Exercise[];
}
interface Exercise {
id: string;
name: string;
date?: string;
sets: WorkoutSet[];
}
interface WorkoutSet {
id: string;
weight: number;
reps: number;
}npm run dev- Start the development servernpm run lint- Run ESLint
iOS App Store
Android Play Store
- Coming soon! Android version will be available shortly.
Coming soon - screenshots will be added once the app is finalized
- Exercise templates and library
- Workout statistics and analytics
- Progress photos
- Social sharing features
- Backup and sync functionality
- Rest timer functionality
- Exercise instructions and animations
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the project
- Create your 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
This project is licensed under the MIT License - see the LICENSE file for details.
Neil Mahajan
- Email: [email protected]
- GitHub: @neilsmahajan
Happy Lifting! 🏋️♂️
Stay consistent, track your progress, and achieve your fitness goals with Repfire.