Β
MoveYourBody is a privacy-first, on-device fitness application designed to help you stay consistent with your goals. It provides personalized, short micro-workout sessions (5β7 minutes) that adapt based on your feedback and health conditions. By running completely offline, MoveYourBody combines rule-based filtering and lightweight semantic matching to ensure your workout data stays entirely private while delivering safe, relevant, and engaging exercises.
- Micro-Workout Sessions: Stay consistent with short, 5-7 minute micro-sessions. You'll receive 2-3 sessions per day, with each session consisting of 3 exercises, complete with built-in notifications.
- Personalized Exercise Selection: Uses an on-device embedding pipeline to match exercises to your goals. It avoids recently performed exercises to prevent boredom, filters out unsafe movements based on your injuries, and adapts difficulty through post-workout feedback.
- High-Quality Animations & Guidance: Understand every movement with crystal-clear animations and instructions that teach you the correct posture.
- Voice-Controlled Interface: Enjoy a hands-free workout experience with voice commands to start, pause, skip, or repeat instructions during a session.
- Body Focus Workouts: Want to target a specific muscle group? Choose from pre-defined sessions tailored for quick, muscle-specific training.
- Custom Workout Creation: Take full control. Explore a database of over 100+ exercises to learn, mix, and build your own custom, flexible workout routines.
- Progress & Motivation: Visualize your consistency and fitness journey with an interactive stats screen, calendar views, and performance charts.
- Privacy-First & 100% Offline: Everything runs on-device. Your health data, feedback, and embedded semantic searches never leave your phone.
- Framework: Flutter
- State Management: Riverpod
- Routing: GoRouter
- UI/Animations: Lottie, Video Player, Google Fonts, FL Chart
- Database: SQLite (
sqflite) - Caching: Shared Preferences, Flutter Cache Manager
- Search Utilities: Fuzzy string matching
- Inference: Flutter ONNX Runtime
- Tokenization: Dart WordPiece
- Models: all-MiniLM-L6-v2 (Quantized ONNX model running directly on-device via
assets/models/model_quantized.onnx)
- The mobile app:
- has an About page containing the Stability Nexus's logo and pointing to the social media accounts of the Stability Nexus.
- is available for download as a release in this repo.
- is available in the relevant app stores.
- The AI/ML components:
- LLM/model selection and configuration are documented.
- Model Selection: all-MiniLM-L6-v2 was chosen because it is designed specifically for sentence similarity tasks. It provides low latency and fast inference which is highly suitable for on-device cases (see Research Paper).
- Configuration: ONNX models are quantized and bundled locally in assets, with tokenization logic strictly handled on-device.

- Prompts and system instructions are version-controlled.
- Content safety and moderation mechanisms are implemented.
- API keys and rate limits are properly managed.
- LLM/model selection and configuration are documented.
The application follows a robust Model-View-ViewModel (MVVM) with Repository Pattern architecture, utilizing Riverpod as the reactive state-management (ViewModel) layer to keep the UI strictly separated from the business and data logic.
graph TD
%% Define Styles
classDef ui fill:#1A2E1A,stroke:#4CAF50,stroke-width:2px,color:#fff;
classDef vm fill:#254025,stroke:#81C784,stroke-width:2px,color:#fff;
classDef model fill:#122412,stroke:#2E7D32,stroke-width:2px,color:#fff;
classDef data fill:#0A1A0A,stroke:#66BB6A,stroke-width:2px,color:#fff;
subgraph View Layer [View Layer]
UI[Flutter UI / Screens]:::ui
Widgets[Custom Widgets]:::ui
end
subgraph ViewModel Layer [ViewModel Layer]
Riverpod[Riverpod Notifiers & Providers]:::vm
Router[GoRouter State]:::vm
end
subgraph Model Layer [Model Layer]
DataModels[Domain Data Models]:::model
Repository[Repositories / Data Handlers]:::model
AI[ONNX Runtime / WordPiece Tokenizer]:::model
end
subgraph Data Layer [Data & Local Storage]
DB[(SQLite / sqflite)]:::data
Cache[(Shared Preferences)]:::data
end
%% Flow of MVVM
UI -->|User Intent / Actions| Riverpod
Riverpod -->|Reactive State Updates| UI
Riverpod -->|Fetch / Process Request| Repository
Repository -->|Parsed Domain Data| Riverpod
Repository -->|Query| DB
Repository -->|Cache| Cache
Riverpod -->|Search Query / Embeddings| AI
AI -->|Semantic Match Results| DataModels
- View Layer: Contains the modular Flutter screens and reusable UI components. Responsible only for rendering state and capturing user input.
- ViewModel Layer (Riverpod): Acts as the bridge between the View and Model. It holds the business logic, manages the state of the UI, and interacts with repositories.
- Model Layer: Contains the core domain structures (Data Models) and the Repositories, which abstract the logic required to access data sources. Includes ONNX inference logic.
- Data Layer: Manages local persistence using SQLite for offline-first capabilities and Shared Preferences for caching.
(Illustrates how user input is processed and mapped to semantic tags)
(Overview of rule-based filtering, injury exclusion, and semantic matching)
(Flowchart detailing how voice commands are captured, processed, and executed)
User opens the app
β
User completes onboarding (details, goals, injuries)
β
Algorithm & AI create a personalized micro-session
β
User executes and completes the workout session
β
User submits post-workout ratings and feedback
β
System adapts and tailors the next session based on feedback
β
User receives notification when the next customized session is ready
- Flutter SDK
- Dart SDK
- Android Studio / Xcode (for emulation and building)
git clone https://github.com/AOSSIE-Org/MoveYourBody.git
cd MoveYourBodyflutter pub getdart run build_runner build --delete-conflicting-outputsRun the provided Python script to set up the local exercise database.
python scripts/generate_exercise_db.pyEnsure you have a simulator running or a device connected.
flutter run![]() |
![]() |
![]() |
β Don't forget to star this repository if you find it useful! β
Thank you for considering contributing to this project! Contributions are highly appreciated and welcomed, read the CONTRIBUTING.md for setting the project.
Note: Before opening a UI Pull Request, please ensure you read our brand.md file for styling guidelines.
This project is licensed under the GNU General Public License v3.0. See the LICENSE file for details.
Thanks a lot for spending your time helping MoveYourBody grow. Keep rocking π₯
Β© 2026 AOSSIE


