Repository navigation
Getting Started
OpenVitals starts with onboarding so users can connect the app to Health Connect and decide which data categories it may read.
The dashboard can work with partial permissions. Activity and Sleep are a small useful starting point. Heart, Body, Nutrition, Hydration, Mindfulness, Vitals, and Cycle can be granted later when those areas are needed.
- Install or enable Health Connect.
- Open OpenVitals.
- Review the Health Connect permission categories.
- Use one-tap setup to grant all requestable permissions, or choose categories individually.
- Return to the Summary screen and wait for Health Connect data to load.
- Check that another app or device is writing data into Health Connect.
- Open Health Connect settings and confirm OpenVitals has the relevant read permissions.
- Grant Health history access if older records outside the recent access window should be included.
- For route previews, open Health Connect permissions manually and approve workout route access.
- If Health Connect reports rate limiting, the dashboard counts down and fills the missing tiles by itself; leave it open rather than refreshing.
The Summary dashboard is read-only. Use Log or Add entry when saving a new record to Health Connect.
Supported entry areas include:
- Hydration and beverages.
- Carbohydrates.
- Activity sessions.
- Mindfulness sessions.
- Weight, height, and body fat.
- Blood pressure, SpO2, respiratory rate, and body temperature.
OpenVitals-created entries can be edited or deleted later. Records created by other apps stay read-only in OpenVitals.
Activity entry supports several workflows:
- Create a manual activity.
- Import GPX, KML, KMZ, TCX, and FIT activity, course, and workout files from Settings, Data Importers, then review detected details before saving.
- Bulk import multiple GPX, KML, or KMZ route files from Settings, Data Importers when you want to save them directly.
- Record a GPS activity from OpenVitals, then review and save it to Health Connect.
- Import PMTiles or Mapsforge map packs from Settings for offline route maps.
- Configure the recording dashboard, use Focus mode, keep the screen awake, and connect supported Bluetooth LE sensors while recording.
GPS recording needs precise location permission. Bluetooth LE sensor recording needs nearby-device Bluetooth permission on Android versions that require it. Finished GPS drafts can be discarded before saving.
Recording notifications, Apple Health import progress, and reminders use notification permission on Android versions that require it.
OpenVitals does not pair watches or scales. Install the separate OpenWatch app to sync a Garmin or Wear OS watch or a Xiaomi S400 scale; it writes what they record to Health Connect, and OpenVitals shows it from there.
Settings, Sync with another phone copies Health Connect records between two nearby phones over Bluetooth, with no cloud involved. The exchange is two-way: each phone sends what the other does not already have, and duplicates are skipped.
- On one phone, choose Make this phone discoverable.
- On the other phone, choose Find a phone and pick the first phone from the scan.
- On both phones, choose how far back to sync and which data categories to include, then start the sync.
- Both phones show a six-digit code. Check that the two codes are the same and confirm on both. If they differ, choose They do not match: nothing is synced.
Bluetooth must be on, and an activity recording must be finished or discarded first, because recording and sync cannot hold the foreground at the same time.
After setup, long-press the Android home screen and add an OpenVitals widget for a selected metric, Daily Readiness, Body Energy, Today Vitals, or quick beverage logging.
Widgets use the same on-device Health Connect data and local derived calculations as the app.
Settings includes Data Importers for supported Apple Health export.xml or export.zip records, GPX/KML/KMZ route files, TCX and FIT activity/course/workout files, and CSV files of point-in-time measurements. GPX/KML/KMZ can be imported one at a time for review or in bulk for direct save.
The CSV importer covers measurements taken at a moment in time, such as weight, body composition, heart rate, HRV, SpO2, respiratory rate, temperature, blood glucose, and VO2 max. You choose which column is the timestamp, which is the value, and what unit it is in. Records that span a period, such as steps, sleep, and workouts, are not part of the CSV importer.
Imported records are written into Health Connect after required write permissions are granted. Large imports can continue in the background and show progress while OpenVitals scans and writes records.
Generated from docs/app/getting-started.md. Edit it there; changes made here are overwritten.
This wiki mirrors the Markdown in Hale-MTU/OpenVitals on every push to main.
Features
- Features
- Achievements
- Activity And Training Plans
- Activity Metrics
- Apple Health Import
- Beverage Logging And Caffeine
- Bluetooth LE Sensors
- Body Energy
- Body Metrics
- CoMaps Navigation Context
- CSV Import
- Cycle Tracking
- Daily Readiness
- Elevation Correction
- Feature Map
- FIT Files Import
- Food Logging
- GPX/KML/KMZ/TCX Route Import
- Health Connect Metrics Dashboard
- Health Report Export
- Heart And Vitals
- Heart Rate Recovery
- Home Screen Widgets
- Hydration
- Manual Entry Of Metrics
- Medical Records
- Metric Detail Customization
- Mindfulness
- Non Health Connect Metrics Dashboard
- Nutrition
- Offline Maps Support
- Onboarding And Permissions
- Preloaded Beverage Nutrition Reference
- Privacy, Support, And Diagnostics
- Recording Of Activity
- Reminders
- Settings And Preferences
- Sleep Score And Recovery
- Sleep Tracking
- Statistics
- Sync With Another Phone
How-to
App
- App Guide
- FAQ
- Getting Started
- Health Connect
- Install
- Local And Connected Editions
- Permissions
- Privacy
- Screenshots
- Support
Reference
- Design Reference
- Reference
- Design Guidelines for Offline & Sync
- OpenVitals UI Notes
- Reference: Data Capture
- Reference: Data Display
- Reference: Health Connect Matchmaking
- Reference: Health Connect Onboarding
- Reference: Health Connect Permissions
- Reference: Health Connect UX
- Reference: Promoting Health Connect
Engineering
- Code Analysis
- Engineering
- Flutter ↔ Kotlin test-parity matrix
- apple-health-import
- Architecture
- body-cycle-recovery
- Design system conformance
- Development
- Feature Playbook
- Flutter -> Kotlin test parity: domain/data/core/contract/state/navigation/di/bootstrap/l10n/widget_test
- Flutter → Kotlin test-parity matrix: features section
- Flutter → Kotlin test-parity matrix: ui / goldens / integration / fixtures
- Flutter-to-Kotlin test-parity matrix — dashboard + devicesync
- manual-entry
- Translations
Proposals
- Proposals
- Activity Start Flow Analysis
- Activity Start Flow Simplification Proposals
- Caffeine Detail And Future Sleep Insights
- Cycle Tracking: Design and Status
- Medical Records Through Health Connect
- Medical Records: What Is Left
Releases
- OpenVitals 2.16.0
- OpenVitals 2.15.2
- OpenVitals 2.15.1
- OpenVitals 2.15.0
- OpenVitals 2.14.5
- OpenVitals 2.14.4
- OpenVitals 2.14.3
- OpenVitals 2.14.2
- OpenVitals 2.14.1
- OpenVitals 2.14.0
- OpenVitals 2.13.0
- OpenVitals 2.12.0
- OpenVitals 2.11.2
- OpenVitals 2.11.1
- OpenVitals 2.11.0
- OpenVitals 2.10.1
- OpenVitals 2.10.0
- OpenVitals 2.9.1
- OpenVitals 2.9.0
- OpenVitals 2.8.0
- OpenVitals 2.7.3
- OpenVitals 2.7.2
- OpenVitals 2.7.1
- OpenVitals 2.7.0
- OpenVitals 2.6.6
- OpenVitals 2.6.5
- OpenVitals 2.6.4
- OpenVitals 2.6.3
- OpenVitals 2.6.2
- OpenVitals 2.6.1
- OpenVitals 2.6.0
- OpenVitals 2.5.0
- OpenVitals 2.4.1
- OpenVitals 2.4.0
- OpenVitals 2.3.2
- OpenVitals 2.3.1
- OpenVitals 2.3.0
- OpenVitals 2.2.8
- OpenVitals 2.2.7
- OpenVitals 2.2.6
- OpenVitals 2.2.5
- OpenVitals 2.2.4
- OpenVitals 2.2.3
- OpenVitals 2.2.2
- OpenVitals 2.2.1
- OpenVitals 2.2.0
- OpenVitals 2.1.0
- OpenVitals 2.0.4
- OpenVitals 2.0.3
- OpenVitals 2.0.2
- OpenVitals 2.0.1
- OpenVitals 1.9.0
- OpenVitals 1.8.0
- OpenVitals 1.7.7
- OpenVitals 1.7.6
- OpenVitals 1.7.5
- OpenVitals 1.7.4
- OpenVitals 1.7.3
- OpenVitals 1.7.2
- OpenVitals 1.7.1
- OpenVitals 1.7.0
- OpenVitals 1.6.3
- OpenVitals 1.6.2
- OpenVitals 1.6.1
- OpenVitals 1.6.0
- OpenVitals 1.5.1
- OpenVitals 1.5.0
Project