Files
health-app/app.json
Marcus Rehbock c48212bfff
All checks were successful
Build & Release APK / build (push) Successful in 2m5s
Fitbit Air: Health Connect sync + vitals dashboard
- react-native-health-connect (config plugin, minSdk 26, 11 read perms)
- sync-on-open + manual sync: incremental via server watermark, chunked
  POST to /api/health/v1/fitbit/sync (HR, resting HR, HRV, SpO2, resp
  rate, steps/distance/kcal/floors dailies, staged sleep sessions)
- Fitbit screen: steps/RHR/HRV/SpO2 tiles + daily charts + sleep list +
  per-stream record counts (answers the which-types-does-Google-Health-
  share question empirically)
- Sleep tab now merges Fitbit Air nights (wins over older sources)
- Today screen Fitbit card

Server side (deployed separately on VPS): hc_samples/hc_daily/hc_sleep
tables + sync/latest/summary endpoints in health-api; Caddy routes POST
/api/health/v1/fitbit/* behind the same basic_auth.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-07 22:25:07 -07:00

71 lines
2.1 KiB
JSON

{
"expo": {
"name": "Health",
"slug": "health-app",
"version": "1.0.0",
"orientation": "portrait",
"icon": "./assets/images/icon.png",
"scheme": "healthapp",
"userInterfaceStyle": "dark",
"backgroundColor": "#0d0d0f",
"ios": {
"icon": "./assets/images/icon.png",
"bundleIdentifier": "xyz.rehbock.health",
"supportsTablet": true
},
"android": {
"package": "xyz.rehbock.health",
"permissions": [
"android.permission.health.READ_HEART_RATE",
"android.permission.health.READ_RESTING_HEART_RATE",
"android.permission.health.READ_HEART_RATE_VARIABILITY",
"android.permission.health.READ_OXYGEN_SATURATION",
"android.permission.health.READ_SLEEP",
"android.permission.health.READ_STEPS",
"android.permission.health.READ_RESPIRATORY_RATE",
"android.permission.health.READ_DISTANCE",
"android.permission.health.READ_ACTIVE_CALORIES_BURNED",
"android.permission.health.READ_TOTAL_CALORIES_BURNED",
"android.permission.health.READ_FLOORS_CLIMBED"
],
"adaptiveIcon": {
"backgroundColor": "#0d0d0f",
"foregroundImage": "./assets/images/android-icon-foreground.png",
"backgroundImage": "./assets/images/android-icon-background.png",
"monochromeImage": "./assets/images/android-icon-monochrome.png"
},
"predictiveBackGestureEnabled": false
},
"web": {
"output": "static",
"favicon": "./assets/images/favicon.png"
},
"plugins": [
"expo-router",
"expo-secure-store",
"react-native-health-connect",
[
"expo-build-properties",
{
"android": {
"minSdkVersion": 26
}
}
],
"./plugins/with-release-signing.js",
[
"expo-splash-screen",
{
"backgroundColor": "#0d0d0f",
"image": "./assets/images/splash-icon.png",
"imageWidth": 76
}
]
],
"experiments": {
"typedRoutes": true,
"reactCompiler": true
}
}
}