Ora is a local-first fitness companion built with Flutter. The repository contains a cross-platform app centered on training, diet logging, and progress check-ins, with optional Labs surfaces for deeper appearance/social workflows plus a voice-first input layer and optional cloud-assisted parsing.
Repo layout note: the Flutter application lives in
Ora/.
- Training workspace with programs, day selection, live session logging, voice entry, exercise history, muscle stats, steps integration, and richer exercise info sheets with presenter-ready scripts
- Diet diary with daily navigation, manual logging, food search, barcode scan, recipes, goal settings, and step-calorie carryover
- Progress workspace that combines weekly review, steps support, workout history/trends, and lighter appearance check-in access
- Labs and secondary menus for profile editing, settings, local-first social accountability, full appearance depth, coach, and leaderboard surfaces
- Floating Ora Orb for camera, upload, mic, text, and uploads access across the shell
- Local SQLite persistence with optional cloud parsing and analysis after onboarding
Ora is local-first in storage and now opens directly into the main shell without requiring cloud setup. Gemini/OpenAI configuration is only prompted when the user invokes an AI-powered action such as cloud-assisted voice, image, or document parsing.
Other current runtime details:
- Core records are stored locally in SQLite.
- Desktop uses
sqflite_common_ffi. - Mobile only initializes Firebase when built with
--dart-define=ENABLE_FIREBASE=true. - Appearance access is consent-gated and now lives behind Progress/Labs entry points instead of a dedicated shell tab.
- The new social hub is local-first in the current codebase; real cloud sync and push delivery are still a follow-up step.
From the repository root:
cd Ora
flutter pub get
flutter runIf you want Firebase-backed account/storage flows on mobile, also provide the example config files and enable Firebase explicitly:
cp android/app/google-services.json.example android/app/google-services.json
cp ios/Runner/GoogleService-Info.plist.example ios/Runner/GoogleService-Info.plist
flutter run --dart-define=ENABLE_FIREBASE=trueProduct and developer docs:
Ora/README.md- app-focused developer READMEOra/docs/ORA_DOCUMENTATION.md- comprehensive product and architecture guideOra/docs/ora_orb.md- floating input hub behaviorOra/docs/generated/exercise_video_scripts.md- catalog-wide 30-60 second presenter scripts generated from exercise science dataOra/progress.md- current product snapshot and recent updates
Project/process docs:
PROJECT_CHARTER.mdROADMAP.mdCONTRIBUTING.mdDECISIONS.mdGOVERNANCE.md
Ora/- Flutter application rootOra/lib/- application codeOra/assets/- branding, anatomy, voice, and model assetsOra/third_party/- local dependency overrides for native/AI integrationsOra/docs/- app-specific documentation
- Flutter + Dart
- SQLite via
sqfliteandsqflite_common_ffi flutter_riverpodProviderScopeat app root with most feature state managed via repositories/services and screen-local state- Offline speech tooling via Vosk and audio capture packages
- Optional cloud services via Gemini/OpenAI plus optional Firebase auth/storage flows
- Health/steps integrations via
health,pedometer, and Fitbit linking
- Reduce logging friction during training and meal tracking
- Keep core user data on-device and usable offline after setup
- Keep Training, Diet, and Progress as the main shell while preserving deeper workflows behind secondary entry points
- Provide multiple input paths: touch, voice, camera, upload, and text