OdinEye is a centralized personal health hub for Android. It aggregates live biometrics from multiple wearables and Android Health Connect, tracks your medication routine with real-time reminders, analyzes muscle recovery and body composition, and delivers on-device AI coaching β all without sending your health data to the cloud.
| Tab | What you get |
|---|---|
| Home | Live metric cards (steps, calories, heart rate, recovery score), Sleep Architecture & 7-Day Debt Balance card, wellness snapshot, today's medication preview, today's zen preview, AI daily insight |
| Meds | Medication routine tracker with week/month calendar view, dose logging, and OS-level push notifications |
| Vitals | Health overview β Activity / Sleep / Recovery pillar breakdown, cardio stats, 7-day sleep duration chart, strength telemetry |
| Body | Per-muscle-group recovery analysis, hypertrophy readiness, Interactive Guided Mobility & Stretching Timer for Fatigued Muscles, body composition (can be toggled off in Config) |
| Zen | Mindfulness & breathwork sanctuary with Tactile Haptic Pacing (eyes-closed meditation), Ambient Binaural Audio Engine (432Hz, 40Hz Gamma, Brown noise), Dynamic Reactive Mood Face, and 7-day streak calendar |
| AI | On-device AI health coach via Android AICore (Gemini Nano) with Voice-Activated Hands-Free Coach, live streaming transcription, and Gemini Cloud API fallback |
| Config | Module toggles, wearable credentials, daily targets, Android Home Screen AppWidgets hub, AES-256 encrypted security vault |
- On-Device Voice Pipeline (
OdinEyeVoiceModule): Hands-free speech interaction utilizing Android's nativeSpeechRecognizerandTextToSpeech(TTS) β 100% offline, zero cloud transmission. - Interactive Transcribe Card: Real-time streaming voice transcription into an editable
TextInput, allowing hands-free speaking, tap-to-correct editing, manual typing, or 1-tap suggested query selection. - Audio Equalizer & Native Animations: 5-bar live equalizer animating dynamically with 100% Native Driver (
useNativeDriver: true) without JS bridge overhead. - Audio Read-Aloud: Optional toggle to speak AI responses out loud automatically using on-device neural TTS.
- Dual-Mode Compatibility: Runs full offline native speech in compiled Android builds (
npm run android), and seamlessly supports mobile keyboard dictation (Google / Samsung Voice Typing) in Expo Go.
- De-Fatigue Composite Routine: Analyzes real-time fatigue scores across 10 muscle groups (Quads, Hamstrings, Chest, Lats/Back, Shoulders, Calves, Glutes, Forearms, Abs, Lower Back) and dynamically sequences targeted restorative stretches.
- Full-Screen Circular Timer: Visual phase countdown ring with intelligent intervals (
Prepare 5sβStretch 30β45sβSwitch Side 5sβNext Exercise). - Tactile Transitions & Ambient Delta Waves: Gentle haptic pulses on phase changes and integrated 2Hz Delta restorative frequency soundscapes.
- Omnipresent Access: Launch from the top banner in Body Analysis, individual muscle group dossier cards, or directly via one-tap action pills in AI Coach recommendations.
- 7-Day Cumulative Sleep Debt: Computes personal sleep debt against your biological baseline (default 8.0h/night) with a strict zero-dummy data guarantee (calculated solely against recorded nights).
- Physical vs. Cognitive Restoration:
- Physical Restoration (Deep Sleep): Tracks slow-wave delta sleep against the clinical 15%β25% target for cellular turnover and human growth hormone release.
- Cognitive Resilience (REM Sleep): Tracks paradoxical REM sleep against the clinical 20%β25% target for emotional memory consolidation and synaptic pruning.
- Scandinavian Bento Card: Full-width spacious bento layout with target range indicator brackets, status badges (
Optimal,Sub-optimal,Abundant), and somatic bedtime coaching advice.
- Somatic Eyes-Closed Meditation: Inhale (rising double micro-pulse), Hold (subtle anchor tap), and Exhale (smooth soothing release) vibration cues so you can meditate with closed eyes.
- In-Chamber Toggle: Instant
π³ Haptics: ON / OFFtoggle pill in the full-screen breathing chamber header with persistent storage. - Crisp Navigation Haptics: Responsive micro-vibrations (
28ms) on bottom tab bar presses (FloatingTabBar) and programmatic in-app card jump links.
- Pill Reminder 4Γ2 Widget: Displays the next scheduled dose with a direct "Take" action button right on the Android home screen without opening the app, updating live adherence.
- Zen Streak & Vitals 4Γ2 Widget: Displays daily steps with progress bar, real-time/resting heart rate, current mindfulness streak, and a one-tap "Breathe" launcher.
- Widget Hub in Settings: Live visual preview, step-by-step setup guide, and manual instant sync.
- Background Sound Engine (
OdinAudioEngine): Real-time mathematical sound synthesis running on a dedicated thread via native AndroidAudioTrack(44.1 kHz 16-bit stereo PCM) that plays continuously with the screen dimmed. - 14 Bespoke Soundscapes:
- Binaural Beats: 40Hz Gamma (focus), 10Hz Alpha (flow), 6Hz Theta (meditation), 2Hz Delta (restoration).
- Solfeggio Frequencies: 432Hz Harmonic Peace, 528Hz Cellular Transformation, 639Hz Compassion.
- Colored Noise: Velvet Brown Noise (1/fΒ² Brownian walk), Organic Pink Noise, Tranquil White Noise.
- Procedural Nature: Resonant ocean waves with LFO modulation, gentle rain, forest breeze, chirping birds.
- Morphing vector SVG face (
MoodFaceIcon) across 5 emotional states (Unhappy, Sad, Normal, Good, Happy) paired with reactive pastel concentric ripple auras, spring bounce physics, and persistent daily state.
| Layer | Technology |
|---|---|
| Framework | React Native 0.86.3 + Expo 57 |
| Language | TypeScript 6 (strict mode β zero unused locals/parameters) |
| Bundler & Tooling | Metro Bundler + babel-preset-expo (AST caching & root-anchored blockList) |
| Navigation | Custom FloatingTabBar with tactile haptic feedback |
| Voice & Speech | Native Kotlin OdinEyeVoiceModule (SpeechRecognizer + TextToSpeech) + Web Speech fallback |
| Mobility & Recovery | Dynamic De-Fatigue Routine Engine (mobilityCatalog.ts) + MobilityTimerModal |
| Audio | Native Kotlin OdinAudioEngine (44.1 kHz stereo PCM) + Web Audio API fallback |
| AppWidgets | Native Android RemoteViews + Kotlin Widget Providers + OdinEyeWidgetModule |
| Haptics | Somatic tactile breath pacing & UI micro-vibrations via React Native Vibration |
| Icons | Bespoke vector SVGs via react-native-svg 15 (no emojis in code) |
| Health data | react-native-health-connect 4.1.3 (Android Health Connect, read-only) |
| Secure storage | expo-secure-store β AES-256-CBC encrypted credential vault |
| AI (on-device) | Android AICore / Gemini Nano via androidAiCoreService |
| AI (cloud fallback) | Google Gemini API via aiService |
| Notifications | OS-level exact alarm scheduling via expo-notifications |
| Design system | Scandinavian Pastel Bento (porcelain, sage mint, forest green, peach, lilac) |
# 1. Install dependencies
npm install
# 2. Start Metro bundler
npm start
# 3. Run on Android (USB + ADB)
npx expo run:androidNo API keys are required to start. The app runs with local data immediately. Connect your wearables via the Config tab when ready.
| Source | Auth method | Data provided |
|---|---|---|
| Android Health Connect | OS permission grant (read-only) | Steps, HR, HRV, sleep, calories, SpO2, distance, skin temp |
| Ultrahuman Ring AIR | Personal API token | Recovery score, sleep stages, HRV, skin temperature |
| Google Fitbit | OAuth access token | Sleep stages, active zone minutes, calories, pace |
| Hevy Strength Log | User API key | Workouts, sets, volume, per-muscle-group load |
| Android AICore | On-device β no key needed | Gemini Nano inference |
| Gemini Cloud | Google AI Studio API key | Cloud AI coaching fallback |
All wearable tokens and API keys are stored in an on-device AES-256-CBC encrypted vault β never in plaintext, never sent to the cloud.
| Property | Specification |
|---|---|
| Cipher | AES-256-CBC |
| Integrity check | HMAC-SHA256 |
| Key derivation | PBKDF2 (10,000 rounds) |
| Storage sandbox | Linux Mode 0700 via expo-secure-store |
| Plaintext exposure | Zero |
| Document | What it covers |
|---|---|
| docs/ON_DEVICE_AI.md | Deep architectural guide on 3-tier local AI stack, Android AICore / Gemini Nano, and zero-telemetry containment |
| docs/PRIVACY_POLICY.md | Google Play & Health Connect Privacy Policy, Limited Use disclosures & legal governance |
| docs/privacy-policy.html | Standalone responsive HTML privacy policy for web/store hosting |
| docs/ARCHITECTURE.md | System design, data flow, module map, security & AI architecture |
| docs/FEATURES.md | Complete feature reference for all 6 tabs |
| docs/API_INTEGRATIONS.md | Step-by-step setup for every wearable and API |
| docs/BUILD.md | Build, install, and release instructions |
| docs/CONTRIBUTING.md | Developer conventions, patterns, and how to extend |
centralized-health-app/
βββ App.tsx # Entry point β onboarding gate
βββ index.ts # Expo bootstrap
βββ babel.config.js # Babel AST transform cache config
βββ metro.config.js # Metro bundler config with crawler exclusions
βββ app.json # Expo + Android manifest config
βββ eas.json # EAS build profiles
βββ LICENSE
βββ assets/ # Brand assets & launcher icons
β βββ OdinEye-Logo.svg # Master vector logo (Fabric.js SVG)
β βββ OdinEye-Logo.png # Master raster logo (1280x1340 RGBA)
β βββ icon.png # Primary application icon (1024x1024)
β βββ adaptive-icon.png # Android adaptive foreground (1024x1024)
βββ docs/
β βββ ON_DEVICE_AI.md # Dedicated on-device AI technical guide
β βββ PRIVACY_POLICY.md # Google Play Privacy Policy (Markdown)
β βββ privacy-policy.html # Web-hosted Privacy Policy (HTML)
β βββ ARCHITECTURE.md
β βββ FEATURES.md
β βββ API_INTEGRATIONS.md
β βββ BUILD.md
β βββ CONTRIBUTING.md
βββ android/
β βββ app/src/main/java/com/odineye/health/
β βββ audio/ # Native AudioTrack procedural sound engine
β β βββ OdinAudioEngine.kt
β βββ voice/ # Native on-device speech recognizer & TTS
β β βββ OdinEyeVoiceModule.kt
β βββ widget/ # Native Android RemoteViews AppWidgets
β βββ PillReminderWidgetProvider.kt
β βββ ZenVitalsWidgetProvider.kt
β βββ OdinEyeWidgetModule.kt
βββ src/
βββ components/
β βββ ai/ # AI coach view + VoiceCoachOverlay
β βββ body/ # Body & muscle recovery + MobilityTimerModal
β βββ common/ # Shared UI (splash, modals, loaders)
β βββ home/ # Home tab cards, SleepArchitectureBentoCard, top bar
β βββ medication/ # Medication tracker, modals, icons
β βββ mindfulness/ # Full-screen Zen chamber, breath orb, mood check-in
β βββ navigation/ # FloatingTabBar with haptics
β βββ overview/ # Vitals tab (HealthOverviewView)
β βββ settings/ # Config tab (SettingsView & Widget Hub)
β βββ sleep/ # Sleep bar chart
βββ screens/
β βββ DashboardScreen.tsx # Root shell β all tabs and global state
β βββ OnboardingScreen.tsx # 2-step onboarding + recalibration mode
βββ services/
β βββ ai/ # AI engine, voiceCoachService, local coach, sports science KB
β βββ api/ # Ultrahuman, Fitbit, Hevy API clients
β βββ audio/ # Ambient sound service (native audio track bridge)
β βββ healthConnect/ # Android Health Connect integration
β βββ live/ # Live telemetry aggregator
β βββ medication/ # Medication service + OS notifications
β βββ mindfulness/ # Mindfulness streak & session logging service
β βββ mobility/ # Guided mobility routines & de-fatigue engine
β βββ security/ # AES-256 crypto utilities
β βββ sleep/ # Sleep history, debt & architecture analytics
β βββ storage/ # Encrypted credentials vault
β βββ widgets/ # AppWidgets synchronization service
βββ theme/
β βββ colors.ts # Scandinavian Pastel Bento palette
βββ types/ # Canonical TypeScript interfaces
βββ index.ts # Barrel export
βββ health.ts
βββ medication.ts
βββ storage.ts
βββ navigation.ts
βββ devices.ts
βββ mobility.ts
βββ components.ts
βββ aiCoach.ts
See docs/BUILD.md for full instructions. If Expo is freezing or stuck on bundling on your device, consult the Troubleshooting Guide.
# Fastest β local USB build (requires Android Studio)
npx expo run:android
# Cloud build β preview APK (no Android Studio needed)
eas build --platform android --profile preview
# Production release build
eas build --platform android --profile productionAndroid package: com.odineye.health
EAS Project ID: df3fdf1c-a9bf-40e5-9c2e-ba21b8183b55
Troubleshooting: docs/TROUBLESHOOTING_EXPO_BUNDLING.md
Declared in app.json β all read-only:
READ_SLEEP Β· READ_HEART_RATE Β· READ_RESTING_HEART_RATE Β· READ_HEART_RATE_VARIABILITY
READ_EXERCISE Β· READ_TOTAL_CALORIES_BURNED Β· READ_ACTIVE_CALORIES_BURNED
READ_STEPS Β· READ_DISTANCE Β· READ_SKIN_TEMPERATURE Β· READ_OXYGEN_SATURATION
READ_RESPIRATORY_RATE Β· POST_NOTIFICATIONS Β· SCHEDULE_EXACT_ALARM Β· VIBRATE
Health Connect permissions only activate on a natively installed APK (
com.odineye.health). They do not function inside Expo Go.