Feature Map
This is the canonical map from user-facing docs to navigation routes, dashboard widgets, and implementation packages. It should be updated when a feature adds a new route, widget, or owned package.
The app is Kotlin and Jetpack Compose. Screens are composables, screen state lives in ViewModels, dependency wiring is Hilt, local persistence is Room, and navigation is Navigation Compose.
Source-of-truth anchors:
- Routes:
Screen.kt - Metric route fan-out:
AppNavigationMetricRoutes.kt - Dashboard widgets:
DashboardWidgetId.kt - Manual entry widgets:
ManualEntryWidgetId.kt - Settings sections:
SettingsSection.kt
| Area | User docs | Routes and widgets | Implementation |
|---|---|---|---|
| Dashboard and customization | Health Connect metrics dashboard, Non Health Connect metrics dashboard, Metric detail customization | Screen.Dashboard; dashboard widgets in DashboardWidgetId | features/dashboard |
| Activity metrics | Activity metrics, Statistics | Screen.Metric; STEPS, DISTANCE, CALORIES_OUT, ACTIVE_CALORIES, FLOORS, ELEVATION, WHEELCHAIR_PUSHES | features/activity, data/repository/ActivityRepository.kt |
| Activities, workouts, cardio load, and maps | Recording of activity, Activity and training plans, GPX/KML/KMZ/TCX route import, FIT files import, Offline maps support, CoMaps navigation context, Bluetooth LE sensors | Screen.Activity, Screen.ActivityDetail, Screen.ActivityEntry, Screen.ActivityEntryEdit, Screen.SettingsDataImport; WORKOUT, CARDIO_LOAD, WEEKLY_CARDIO_LOAD; ManualEntryWidgetId.ACTIVITY | features/activity, features/activity/maps, features/manualentry/activity, features/manualentry/activity/recording, features/manualentry/activity/routeimport, features/settings |
| Sleep, recovery, and readiness | Sleep tracking, Sleep score and recovery, Daily readiness, Body Energy | Screen.Sleep, Screen.SleepDetail, Screen.DailyReadiness, Screen.BodyEnergyDetails, Screen.TrainingReadinessDetails, Screen.StressDetails; SLEEP, BODY_ENERGY | features/sleep, features/recovery, features/readiness, features/bodyenergy |
| Heart and vitals | Heart and vitals, Manual entry of metrics | Screen.Metric, Screen.VitalsMeasurementEntry, Screen.VitalsMeasurementEntryEdit; AVG_HEART_RATE, RESTING_HEART_RATE, HRV, BLOOD_PRESSURE, SPO2, VO2_MAX, RESPIRATORY_RATE, BODY_TEMPERATURE, BLOOD_GLUCOSE, SKIN_TEMPERATURE; vitals manual widgets | features/heart, features/vitals, features/manualentry/vitals, data/repository/HeartRepository.kt, data/repository/VitalsRepository.kt |
| Heart rate recovery | Heart rate recovery, Recording of activity | HeartRecoveryDetailRoute (heart/recovery); activity detail card; heart screen surface | domain/insights/HeartRateRecovery.kt, features/recovery, features/activity, features/manualentry/activity/recording |
| Body metrics | Body metrics, Manual entry of metrics, Settings and preferences | Screen.Metric, Screen.BodyMeasurementEntry, Screen.BodyMeasurementEntryEdit, Screen.SettingsBodyProfile; WEIGHT, HEIGHT, BMI, FFMI, BODY_FAT, LEAN_MASS, BMR, BONE_MASS, BODY_WATER_MASS; ManualEntryWidgetId.WEIGHT, HEIGHT, BODY_FAT | features/body, features/manualentry/body, data/repository/BodyRepository.kt |
| Hydration, beverages, and caffeine | Hydration, Beverage logging and caffeine, Reminders, Preloaded beverage nutrition reference | Screen.HydrationEntry, Screen.HydrationEntryEdit, Screen.HydrationEntryLogDrink, Screen.Metric; HYDRATION, CAFFEINE; ManualEntryWidgetId.HYDRATION; hydration settings and Nutrition settings for caffeine preferences | features/hydration, features/hydration/reminders, features/caffeine, features/manualentry/hydration, data/repository/HydrationRepository.kt, data/repository/NutritionRepository.kt |
| Nutrition | Nutrition, Manual entry of metrics | Screen.Nutrition, Screen.CarbsEntry, Screen.Metric; CALORIES_IN, PROTEIN, CARBS, FAT; ManualEntryWidgetId.CARBS; settings section NUTRITION | features/nutrition, features/manualentry/nutrition, data/repository/NutritionRepository.kt |
| Mindfulness | Mindfulness, Reminders, Manual entry of metrics | Screen.MindfulnessEntry, Screen.MindfulnessEntryEdit, Screen.Metric; MINDFULNESS; ManualEntryWidgetId.MINDFULNESS; mindfulness reminder settings | features/mindfulness, features/mindfulness/reminders, features/manualentry/mindfulness, data/repository/MindfulnessRepository.kt |
| Cycle tracking | Cycle tracking, Onboarding and permissions | Screen.Metric; CYCLE; cycle permission category in Health Connect settings | features/cycle, data/repository/CycleRepository.kt |
| Watches | Smartwatches, Bluetooth LE sensors, FIT files import | Screen.SettingsWatches, Screen.WatchDevice, Screen.WatchData, Screen.WatchNotifications, Screen.WatchSettings; settings section WATCHES | features/watches, devices/core, devices/garmin, devices/wearos, devices/notifications, data/local/garmin |
| Phone-to-phone sync | Sync with another phone | Screen.SettingsDeviceSync; settings section DEVICE_SYNC | features/devicesync, features/devicesync/bluetooth, features/devicesync/protocol, features/devicesync/store |
| CSV import | CSV import, Body metrics, Heart and vitals | Screen.SettingsDataImport, Screen.SettingsCsvImport; settings section DATA_IMPORT | features/imports/csv, features/settings |
| Health report export | Health report export | Screen.SettingsDataImport, Screen.SettingsReportExport; settings section DATA_IMPORT | features/reports, data/repository/report, domain/report |
| App experience | Onboarding and permissions, Settings and preferences, Home screen widgets, Achievements, Apple Health import, Privacy, support, and diagnostics | Screen.Onboarding, Screen.Settings, settings subsection routes, Screen.Achievements; settings sections DISPLAY, ACTIVITIES, SENSORS, WATCHES, NUTRITION, BODY_PROFILE, RECOVERY, DATA_IMPORT, DEVICE_SYNC, HEALTH_CONNECT, DEBUG_DIAGNOSTICS | features/onboarding, features/settings, features/homewidgets, features/achievements, features/imports/applehealth, healthconnect, navigation |
Notes
Screen.Metricis a generic route, but the rendered detail screen is feature-owned and selected byDashboardWidgetId.- Manual entry routes write explicit user-entered records to Health Connect. Dashboard and metric detail routes are read-oriented unless they open an explicit add/edit flow.
- Proposal pages live in the app repository so these feature docs stay focused on implemented behavior.