A modern, high-performance fitness tracking application built with React Native and Expo. Designed with an offline-first philosophy and a focused user experience for tracking workouts, sets, and progress.
- Offline-First Architecture: Track your workouts anywhere, even without an internet connection.
- Custom Workout Creation: Build your own routines or start an empty workout on the fly.
- Advanced Set Tracking: Supports multiple set types including Warmup, Working, and Dropsets.
- Performance Memory: Automatically remembers your last 5 performances per exercise and set type, providing reactive suggestions.
- Routine Templates: Save your favorite workouts as templates for quick access in the future.
- Personal Records: Tracks and displays your all-time bests for every exercise.
- Modern UI/UX: Clean, intuitive interface with dark mode support and touch-optimized interactions.
- Framework: React Native with Expo
- State Management: MobX State Tree (MST)
- Language: TypeScript
- Styling: Ignite UI based theme system
- Storage: dual-layer persistence (MMKV for fast data + Secure Storage for sensitive auth tokens)
-
Clone the repository:
git clone https://github.com/PlaneInABottle/fitnessMobileApp.git cd fitnessMobileApp -
Install dependencies:
bun install
-
Start the development server:
bun run start
To build the native Android and iOS directories:
bunx expo prebuildFor EAS builds:
bun run build:ios:sim # build for ios simulator
bun run build:android:preview # build for android previewThe app follows a strict 5-Store Architecture using MobX State Tree:
- ExerciseStore: Manages the library of available exercises and categories.
- WorkoutStore: Handles active sessions, workout history, and templates.
- SetStore: Logic for individual set validation and data management.
- PerformanceMemoryStore: Remembers performance patterns and calculates suggestions.
- ProgressStore: (In development) For advanced analytics and progress tracking.
The project uses Jest for unit and integration testing.
Run all tests:
bun run testThis project is licensed under the MIT License - see the LICENSE file for details.
Contributions are welcome! Please feel free to submit a Pull Request.
Built with ❤️ by Mirza