Repository navigation
Food Logging
Status: Current implemented behavior. Audience: Users and contributors. Implementation:
features/manualentry/food,features/manualentry/nutrition,data/local/food,data/repository/FoodRepository.kt. Navigation:Screen.FoodEntry; entry widgetManualEntryWidgetId.FOOD. Related: Feature map, Nutrition, Beverage logging and caffeine, Manual entry of metrics.
Food logging works like beverage logging: a catalog the user keeps, and a Health Connect record for each portion eaten.
There are no preloaded foods. The user makes each one with New food:
- a name,
- an amount in grams (or ounces, under imperial units),
- a category, or none,
- one or more nutrients, for that amount.
Any nutrient Health Connect supports can be added: energy, the macros, fibre, sugar, the fat types, vitamins, minerals, and caffeine. A food needs at least one nutrient; a portion with none would have nothing to write.
Each nutrient is typed in the unit a nutrition label prints for it: kcal for energy, g for the macros, fibre, sugar and fats, mg for vitamin C, vitamin E, the B vitamins other than B12, cholesterol, caffeine and most minerals, and µg for vitamins A, D, K and B12, folate, folic acid, biotin, chromium, iodine, molybdenum and selenium. The stored value is grams either way. The same units apply to custom drinks and the nutrition entry form.
The catalog lives in Room, in foods and food_nutrients. Deleting a food hides it; the row stays. Foods without a category are listed first, then each category in order. A search field appears once the list is long.
Tapping a food asks for the amount eaten, with the food's own amount preselected, and when it was eaten. The nutrients are scaled by amount eaten over the food's amount and written as one Health Connect nutrition record named after the food. Its client record id starts with openvitals_food_ and carries the food's id.
The beverage history and the frequent-drinks list skip records with that prefix, so a food never appears as a drink, even one with caffeine or a drink's name. The nutrition screens list it under meals; calories in, protein, carbohydrates and fat count it. The caffeine screen counts a caffeinated food as a caffeine source.
A logged portion can be deleted from the nutrition screens. It cannot be edited after the fact.
Writing needs Health Connect nutrition write permission. The entry screen asks for it when it is missing. OpenVitals keeps the catalog only; each logged portion is stored in Health Connect.
Generated from docs/features/food-logging.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