Android Feature Parity Checklist¶
Status: 95% Complete (per android/README.md) Goal: Achieve 100% feature parity with iOS before launch Last Updated: October 20, 2025
Executive Summary¶
What's Complete ✅¶
- Core Architecture: 100% (Room database, services, navigation)
- Database Layer: 100% (All entities and DAOs implemented)
- Core Services: 100% (14 services matching iOS)
- Main Screens: 85% (5/6 main tabs implemented)
- Supplement Management: 100% (DSLD search, add, edit, doses)
- Schedule System: 100% (Profiles, schedules, notifications)
- Nutrient Tracking: 100% (RDA calculations, starred nutrients)
What's Missing ❌¶
- Analytics Dashboard (0%) - Major feature gap
- Food Photo Tracking (0%) - Beta feature on iOS
- Profile Settings (0%) - Personal demographics UI
- Data Export/Import (0%) - Backup/restore functionality
- Subscription Management (40%) - UI exists, StoreKit equivalent needed
- AI Usage Tracking (0%) - Quota management system
- Barcode Scanning (0%) - CameraX + ML Kit needed
- Label Scanning (0%) - OCR for supplement labels
Feature Comparison Matrix¶
| Feature Category | iOS Status | Android Status | Priority | Effort |
|---|---|---|---|---|
| Core Features | ||||
| Supplement CRUD | ✅ Complete | ✅ Complete | ✅ DONE | - |
| DSLD Search & Import | ✅ Complete | ✅ Complete | ✅ DONE | - |
| Dose Tracking | ✅ Complete | ✅ Complete | ✅ DONE | - |
| Stock Management | ✅ Complete | ✅ Complete | ✅ DONE | - |
| Nutrient Aggregation | ✅ Complete | ✅ Complete | ✅ DONE | - |
| RDA Calculations | ✅ Complete | ✅ Complete | ✅ DONE | - |
| Starred Nutrients | ✅ Complete | ✅ Complete | ✅ DONE | - |
| Scheduling | ||||
| Schedule Profiles | ✅ Complete | ✅ Complete | ✅ DONE | - |
| Daily/Weekly Schedules | ✅ Complete | ✅ Complete | ✅ DONE | - |
| Schedule Notifications | ✅ Complete | ✅ Complete | ✅ DONE | - |
| Skip Schedule | ✅ Complete | ✅ Complete | ✅ DONE | - |
| Analytics | ||||
| Analytics Dashboard | ✅ Complete | ❌ Missing | 🔴 HIGH | High |
| Nutrient Trends | ✅ Complete | ❌ Missing | 🔴 HIGH | Medium |
| Adherence Stats | ✅ Complete | ❌ Missing | 🔴 HIGH | Medium |
| Multi-day Averages | ✅ Complete | ❌ Missing | 🔴 HIGH | Low |
| User Profile | ||||
| Personal Settings UI | ✅ Complete | ❌ Missing | 🔴 HIGH | Medium |
| Age/Gender/Pregnancy | ✅ Complete | ⚠️ Service Only | 🔴 HIGH | Low |
| Custom RDA Targets | ✅ Complete | ❌ Missing | 🟡 MEDIUM | Medium |
| Food Tracking | ||||
| Food Photo Analysis | ✅ Beta | ❌ Missing | 🟢 LOW | High |
| AI Nutrient Extraction | ✅ Beta | ❌ Missing | 🟢 LOW | High |
| Food History | ✅ Beta | ⚠️ Database Only | 🟢 LOW | Low |
| Data Management | ||||
| Export to JSON | ✅ Complete | ❌ Missing | 🟡 MEDIUM | Medium |
| Import from JSON | ✅ Complete | ❌ Missing | 🟡 MEDIUM | Medium |
| Paste JSON Import | ✅ Complete | ❌ Missing | 🟢 LOW | Low |
| Data Statistics | ✅ Complete | ❌ Missing | 🟢 LOW | Low |
| Subscriptions | ||||
| Subscription Tiers | ✅ Complete | ⚠️ UI Only | 🔴 HIGH | High |
| StoreKit 2 IAP | ✅ Complete | ❌ Missing | 🔴 HIGH | High |
| Google Play Billing | ❌ N/A | ❌ Missing | 🔴 HIGH | High |
| AI Usage Tracking | ✅ Complete | ❌ Missing | 🔴 HIGH | Medium |
| Server Quota Sync | ✅ Complete | ❌ Missing | 🟡 MEDIUM | Medium |
| AI Features | ||||
| Barcode Scanning | ✅ Complete | ❌ Missing | 🟡 MEDIUM | Medium |
| Label OCR Scanning | ✅ Complete | ❌ Missing | 🟡 MEDIUM | High |
| Food Photo AI | ✅ Beta | ❌ Missing | 🟢 LOW | High |
| Settings | ||||
| App Settings | ✅ Complete | ⚠️ Partial | 🟡 MEDIUM | Low |
| Notification Settings | ✅ Complete | ⚠️ TODO | 🟡 MEDIUM | Low |
| Appearance (Dark Mode) | ✅ Complete | ✅ Complete | ✅ DONE | - |
| Privacy Policy | ✅ Complete | ✅ Complete | ✅ DONE | - |
| Terms of Service | ✅ Complete | ✅ Complete | ✅ DONE | - |
Legend: - ✅ Complete: Feature fully implemented and tested - ⚠️ Partial: Some components exist but incomplete - ❌ Missing: Feature not started - 🔴 HIGH: Required for launch - 🟡 MEDIUM: Important but not blocking - 🟢 LOW: Nice-to-have, can defer
Detailed Feature Breakdown¶
1. Analytics Dashboard ❌ MISSING (HIGHEST PRIORITY)¶
iOS Implementation:
- File: AnalyticsView.swift (265 lines)
- Features:
- Multi-tab dashboard (Nutrients, Adherence)
- 7-day and 30-day nutrient trends
- RDA compliance percentages
- Adherence rate calculations
- Streak tracking
- Interactive charts (requires Swift Charts)
Android Required:
- New File: ui/screens/AnalyticsScreen.kt
- Dependencies:
- MPAndroidChart or Vico for charting
- ViewModel: AnalyticsViewModel.kt
- Use existing NutrientAggregationService (already ported)
- Use existing StreakTrackingService (already ported)
Implementation Steps:
1. Create AnalyticsViewModel.kt with state management
2. Create AnalyticsScreen.kt with TabRow layout
3. Add Nutrient Trends tab with charts
4. Add Adherence Stats tab
5. Integrate with existing aggregation services
6. Add navigation from MoreScreen
Estimated Effort: 2-3 days (High priority)
2. Personal Settings UI ❌ MISSING (HIGH PRIORITY)¶
iOS Implementation:
- File: MoreView.swift:216-324 (PersonalSettingsView)
- Features:
- Name input field
- Date of birth picker
- Gender selection (Male/Female)
- Pregnancy toggle (Female only)
- Lactation toggle (Female only)
- Age calculation and display
- Age group classification
- Auto-save functionality
Android Current State:
- UserRDAService exists and works (age/gender/pregnancy logic)
- No UI to input/edit user profile data
- MoreScreen has TODO: "Navigate to Personal Settings" (line 92)
Android Required:
- New File: ui/screens/PersonalSettingsScreen.kt
- Components:
- Text field for name
- Date picker for DOB (Material3 DatePicker)
- Gender radio buttons
- Pregnancy/lactation checkboxes (conditional on gender)
- Age display (calculated)
- Age group display
- Save button
Implementation Steps:
1. Create PersonalSettingsScreen.kt composable
2. Add ViewModel if needed (or use direct SharedPreferences)
3. Add date picker dialog
4. Implement gender-conditional UI (show pregnancy only for females)
5. Add save logic to persist to UserRDAService
6. Wire up navigation from MoreScreen (line 92)
Estimated Effort: 1-2 days (Medium priority, but required for RDA accuracy)
3. Data Export/Import ❌ MISSING (MEDIUM PRIORITY)¶
iOS Implementation:
- File: DataManagementView.swift (428 lines)
- Service: DataExportService.swift (316 lines)
- Features:
- Export all data to JSON file
- Import from JSON file picker
- Paste JSON from clipboard
- Data statistics display
- Destructive import confirmation
- Version control (currently "1.0")
Android Current State: - MoreScreen has TODOs for Export/Import (lines 127, 135) - No export/import service exists - Database layer supports all needed operations
Android Required:
- New File: services/DataExportService.kt
- New File: ui/screens/DataManagementScreen.kt
- Features:
- Export supplements, doses, schedules, profiles, nutrients to JSON
- File picker for export (.json file)
- File picker for import
- Clipboard paste import (optional but nice)
- Batch delete before import (same as iOS)
- Statistics: supplement count, dose count, days tracked
Implementation Steps:
1. Create DataExportService.kt with export/import logic
2. Use Gson or Kotlinx.serialization for JSON
3. Create DataManagementScreen.kt UI
4. Add file picker intents (ACTION_CREATE_DOCUMENT, ACTION_OPEN_DOCUMENT)
5. Add confirmation dialog for destructive import
6. Wire up navigation from MoreScreen (lines 127, 135)
Estimated Effort: 2-3 days (Medium priority, important for user data safety)
4. Food Photo Tracking ❌ MISSING (LOW PRIORITY - BETA)¶
iOS Implementation:
- File: FoodView.swift (1020 lines)
- Service: FoodTrackingService.swift (181 lines)
- Service: OpenAIService.swift:extractFoodInformation() (lines 498-626)
- Features:
- Camera capture for food photos
- Multi-image selection
- GPT-4 Vision API analysis
- AI nutrient extraction
- Food history list
- Manual food entry (TODO on iOS too)
- AI usage counter integration
Android Current State:
- FoodEntry and FoodNutrient entities exist in database
- OpenAIService.kt exists but needs food-specific methods
- No UI for food tracking
- MoreScreen has TODO: "Navigate to Food screen" (line 64)
Android Required:
- New File: ui/screens/FoodScreen.kt
- New File: services/FoodTrackingService.kt
- Dependencies:
- CameraX for camera capture
- Image picker for gallery selection
- OpenAI Vision API integration
- AI usage tracking
Implementation Steps:
1. Create FoodTrackingService.kt (port from iOS)
2. Add food-specific methods to OpenAIService.kt
3. Create FoodScreen.kt with camera/gallery UI
4. Implement image capture with CameraX
5. Add AI analysis integration
6. Add food history list
7. Wire up navigation from MoreScreen (line 64)
Estimated Effort: 4-5 days (Low priority - beta feature)
Note: This is marked as "Beta" on iOS and can be deferred post-launch.
5. Subscription Management ⚠️ PARTIAL (HIGH PRIORITY)¶
iOS Implementation:
- File: SubscriptionView.swift (357 lines)
- Service: StoreKitManager.swift (442 lines)
- Service: AIUsageTracker.swift (354 lines)
- Features:
- 4 subscription tiers (Basic, Pro, Premium, Ultimate)
- StoreKit 2 purchase flow
- Restore purchases
- Server quota sync
- AI usage tracking with daily/weekly limits
- Tier badge in MoreView
Android Current State:
- MoreScreen has subscription UI with tier badge (lines 70-75, 289-310)
- Shows "Free" tier hardcoded (line 72: currentTier = "Free")
- No subscription service exists
- No Google Play Billing integration
- No AI usage tracking
Android Required:
- New File: services/GooglePlayBillingManager.kt
- New File: services/AIUsageTracker.kt
- New File: ui/screens/SubscriptionScreen.kt
- Dependencies:
- Google Play Billing Library 6.0+
- Coroutines for async billing operations
Implementation Steps:
1. Add Google Play Billing dependency to build.gradle
2. Create GooglePlayBillingManager.kt (equivalent to StoreKitManager)
3. Create AIUsageTracker.kt (port from iOS)
4. Create subscription products in Google Play Console:
- no.invotek.nutrie.basic_monthly - $4.99/mo
- no.invotek.nutrie.pro_monthly - $11.99/mo
- no.invotek.nutrie.premium_monthly - $24.99/mo
- no.invotek.nutrie.ultimate_monthly - $39.99/mo
5. Create SubscriptionScreen.kt with tier selection UI
6. Integrate with Cloudflare Worker for server quota sync
7. Update MoreScreen to show actual tier (line 72)
8. Wire up navigation from MoreScreen (line 308)
Estimated Effort: 3-4 days (High priority for monetization)
6. AI Barcode Scanning ❌ MISSING (MEDIUM PRIORITY)¶
iOS Implementation:
- File: BarcodeScannerView.swift (189 lines)
- Service: BarcodeScannerService.swift (143 lines)
- Features:
- Camera-based barcode scanning
- UPC-A, EAN-13, ITF-14 support
- Automatic DSLD search after scan
- Real-time barcode detection
- Haptic feedback on detection
Android Current State:
- No barcode scanner exists
- DSLDSearchService supports barcode search (already ported)
Android Required:
- New File: ui/screens/BarcodeScannerScreen.kt
- Dependencies:
- CameraX for camera preview
- ML Kit Barcode Scanning
- Vibration for haptic feedback
Implementation Steps:
1. Add ML Kit dependency: com.google.mlkit:barcode-scanning:17.2.0
2. Create BarcodeScannerScreen.kt with CameraX preview
3. Integrate ML Kit barcode analyzer
4. Add real-time barcode detection
5. Call DSLDSearchService.searchByBarcode() on detection
6. Add haptic feedback (vibration)
7. Add navigation from AddSupplementView
Estimated Effort: 2 days (Medium priority - helpful but not critical)
7. AI Label Scanning ❌ MISSING (MEDIUM PRIORITY)¶
iOS Implementation:
- File: ScanLabelView.swift (411 lines)
- Service: OpenAIService.swift:processSupplementLabel() (lines 74-247)
- Features:
- Multi-image capture (front, back, nutrition facts)
- GPT-4 Vision analysis
- Automatic nutrient extraction from label photos
- Progress indicator
- Fallback to manual entry
Android Current State:
- OpenAIService.kt exists but needs label-specific methods
- No UI for label scanning
Android Required:
- New File: ui/screens/ScanLabelScreen.kt
- Dependencies:
- CameraX for image capture
- Multi-image picker
- OpenAI Vision API integration
- AI usage tracking
Implementation Steps:
1. Add label scanning methods to OpenAIService.kt
2. Create ScanLabelScreen.kt with multi-image UI
3. Implement image capture flow (front, back, nutrition)
4. Add progress indicator during API call
5. Integrate AI usage tracking
6. Add navigation from AddSupplementView
Estimated Effort: 2-3 days (Medium priority - nice-to-have)
8. Notification Settings ⚠️ PARTIAL (MEDIUM PRIORITY)¶
iOS Implementation:
- File: NotificationSettingsView.swift (209 lines)
- Features:
- Permission status display
- Enable notifications button
- Overdue delay picker (0-60 minutes)
- Low stock toggle and threshold slider
- Test notification buttons
Android Current State:
- NotificationService.kt exists and works (already ported)
- MoreScreen has TODO: "Navigate to Notifications" (line 112)
- No UI for notification settings
Android Required:
- New File: ui/screens/NotificationSettingsScreen.kt
- Components:
- Permission status display
- Request permission button
- Overdue delay picker (Material3 slider)
- Low stock toggle and threshold slider
- Test notification buttons
Implementation Steps:
1. Create NotificationSettingsScreen.kt composable
2. Add permission check (POST_NOTIFICATIONS for Android 13+)
3. Add permission request flow
4. Add delay and threshold pickers (use Material3 Slider)
5. Add test buttons to trigger sample notifications
6. Wire up navigation from MoreScreen (line 112)
Estimated Effort: 1 day (Low effort, medium priority)
9. App Settings ⚠️ PARTIAL (LOW PRIORITY)¶
iOS Implementation:
- File: SettingsView.swift (125 lines)
- Features:
- Appearance mode (Light/Dark/System)
- Language selection (future)
- Units preferences (future)
Android Current State: - MoreScreen has TODO: "Navigate to App Settings" (line 119) - Dark mode works (Material3 dynamic theming) - No settings UI
Android Required:
- New File: ui/screens/AppSettingsScreen.kt
- Components:
- Appearance mode picker (Light/Dark/System)
- Future: language, units
Implementation Steps:
1. Create AppSettingsScreen.kt composable
2. Add appearance mode picker (RadioButtons)
3. Persist selection to SharedPreferences or DataStore
4. Apply theme dynamically
5. Wire up navigation from MoreScreen (line 119)
Estimated Effort: 0.5-1 day (Low priority, cosmetic)
Service Layer Comparison¶
✅ Complete Services (Ported from iOS)¶
| Service | iOS | Android | Status |
|---|---|---|---|
| DosageFormService | ✅ | ✅ | 100% Ported |
| StreakTrackingService | ✅ | ✅ | 100% Ported |
| StarredNutrientsService | ✅ | ✅ | 100% Ported |
| DeviceAuthService | ✅ | ✅ | 100% Ported |
| OpenAIService | ✅ | ✅ | 90% (needs food/label methods) |
| StockManagementService | ✅ | ✅ | 100% Ported |
| ConsumptionPredictionService | ✅ | ✅ | 100% Ported |
| SupplementDisplayFormatter | ✅ | ✅ | 100% Ported |
| NutrientAggregationService | ✅ | ✅ | 100% Ported |
| UserRDAService | ✅ | ✅ | 100% Ported |
| DSLDSearchService | ✅ | ✅ | 100% Ported |
| SupplementService | ✅ | ✅ | 100% Ported |
| ScheduleService | ✅ | ✅ | 100% Ported |
| ScheduleSkipService | ✅ | ✅ | 100% Ported |
| NotificationService | ✅ | ✅ | 100% Ported |
❌ Missing Services¶
| Service | iOS | Android | Priority |
|---|---|---|---|
| AIUsageTracker | ✅ | ❌ | 🔴 HIGH |
| StoreKitManager | ✅ | ❌ (needs Google Play equivalent) | 🔴 HIGH |
| DataExportService | ✅ | ❌ | 🟡 MEDIUM |
| FoodTrackingService | ✅ | ❌ | 🟢 LOW (Beta) |
| BarcodeScannerService | ✅ | ❌ | 🟡 MEDIUM |
Screen/View Comparison¶
✅ Complete Screens¶
| Screen | iOS File | Android File | Status |
|---|---|---|---|
| Today | TodayView.swift | TodayScreen.kt | ✅ Complete |
| Supplements | SupplementsView.swift | SupplementsScreen.kt | ✅ Complete |
| Schedule | ScheduleManagementView.swift | ScheduleManagementScreen.kt | ✅ Complete |
| Nutrients | NutrientsView.swift | NutrientsScreen.kt | ✅ Complete |
| More | MoreView.swift | MoreScreen.kt | ⚠️ Partial (navigation TODOs) |
| Add Supplement | AddSupplementView.swift | AddSupplementView.kt | ✅ Complete |
| Edit Supplement | EditSupplementView.swift | EditSupplementView.kt | ✅ Complete |
| Supplement Detail | SupplementDetailView.swift | SupplementDetailView.kt | ✅ Complete |
| DSLD Search | SupplementSearchView.swift | DSLDSearchScreen.kt | ✅ Complete |
| Nutrient Detail | NutrientDetailView.swift | NutrientDetailView.kt | ✅ Complete |
| Add Schedule | AddScheduleView.swift | AddScheduleView.kt | ✅ Complete |
| Edit Schedule | - | EditScheduleView.kt | ✅ Complete |
| Schedule Profile | ScheduleProfileView.swift | ScheduleProfileView.kt | ✅ Complete |
❌ Missing Screens¶
| Screen | iOS File | Android Status | Priority |
|---|---|---|---|
| Analytics | AnalyticsView.swift | ❌ Missing | 🔴 HIGH |
| Personal Settings | MoreView.swift:216-324 | ❌ Missing | 🔴 HIGH |
| Data Management | DataManagementView.swift | ❌ Missing | 🟡 MEDIUM |
| Subscription | SubscriptionView.swift | ⚠️ Partial (no purchase flow) | 🔴 HIGH |
| Notification Settings | NotificationSettingsView.swift | ❌ Missing | 🟡 MEDIUM |
| App Settings | SettingsView.swift | ❌ Missing | 🟢 LOW |
| Food Tracking | FoodView.swift | ❌ Missing | 🟢 LOW (Beta) |
| Barcode Scanner | BarcodeScannerView.swift | ❌ Missing | 🟡 MEDIUM |
| Scan Label | ScanLabelView.swift | ❌ Missing | 🟡 MEDIUM |
| Device Info | DeviceInfoView.swift | ❌ Missing | 🟢 LOW (Debug only) |
| Onboarding | OnboardingView.swift | ❌ Missing | 🟢 LOW |
| Privacy Policy | PrivacyPolicyView.swift | ⚠️ Link Only | ✅ Acceptable |
| Terms of Service | TermsOfServiceView.swift | ⚠️ Link Only | ✅ Acceptable |
Database Comparison¶
✅ Complete Entities¶
All Core Data entities have been ported to Room:
| Entity | iOS (Core Data) | Android (Room) | Status |
|---|---|---|---|
| Supplement | ✅ | ✅ | 100% Parity |
| SupplementDose | ✅ | ✅ | 100% Parity |
| Nutrient | ✅ | ✅ | 100% Parity |
| ScheduleProfile | ✅ | ✅ | 100% Parity |
| SupplementSchedule | ✅ | ✅ | 100% Parity |
| FoodEntry | ✅ | ✅ | 100% Parity |
| FoodNutrient | ✅ | ✅ | 100% Parity |
| SupplementImage | ✅ | ✅ | 100% Parity |
Result: Database layer is 100% complete ✅
Dependencies Required¶
Android Missing Dependencies¶
For Analytics:
// Charting library (choose one)
implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0'
// OR
implementation 'com.patrykandpatrick.vico:compose:1.13.1'
For Subscriptions:
For Barcode Scanning:
For Camera Features (Food/Barcode/Label):
// CameraX
def camerax_version = "1.3.0"
implementation "androidx.camera:camera-core:${camerax_version}"
implementation "androidx.camera:camera-camera2:${camerax_version}"
implementation "androidx.camera:camera-lifecycle:${camerax_version}"
implementation "androidx.camera:camera-view:${camerax_version}"
For JSON Serialization:
Prioritized Implementation Roadmap¶
Phase 1: CRITICAL FOR LAUNCH (1-2 weeks)¶
Goal: Achieve minimum feature parity for Android launch
- Analytics Dashboard (2-3 days, HIGH)
- Create AnalyticsScreen.kt
- Add nutrient trends charts
- Add adherence statistics
-
Wire up navigation
-
Personal Settings UI (1-2 days, HIGH)
- Create PersonalSettingsScreen.kt
- Add date picker, gender selector
- Integrate with UserRDAService
-
Wire up navigation
-
Subscription Management (3-4 days, HIGH)
- Add Google Play Billing dependency
- Create GooglePlayBillingManager.kt
- Create AIUsageTracker.kt
- Create SubscriptionScreen.kt
- Set up subscription products in Play Console
-
Wire up navigation and tier display
-
Data Export/Import (2-3 days, MEDIUM)
- Create DataExportService.kt
- Create DataManagementScreen.kt
- Add file picker intents
- Wire up navigation
Total: 8-12 days for Phase 1
Phase 2: ENHANCED FEATURES (1-2 weeks)¶
Goal: Add AI scanning and settings polish
- Barcode Scanning (2 days, MEDIUM)
- Add ML Kit dependency
- Create BarcodeScannerScreen.kt
-
Integrate with DSLDSearchService
-
Notification Settings (1 day, MEDIUM)
- Create NotificationSettingsScreen.kt
- Add permission flow
-
Wire up navigation
-
App Settings (0.5-1 day, LOW)
- Create AppSettingsScreen.kt
- Add appearance picker
-
Wire up navigation
-
Label Scanning (2-3 days, MEDIUM)
- Add label methods to OpenAIService.kt
- Create ScanLabelScreen.kt
- Wire up multi-image capture
Total: 5-7 days for Phase 2
Phase 3: BETA FEATURES (Optional, Post-Launch)¶
Goal: Achieve 100% iOS parity including beta features
- Food Photo Tracking (4-5 days, LOW)
- Create FoodTrackingService.kt
- Add food methods to OpenAIService.kt
- Create FoodScreen.kt
-
Add CameraX integration
-
Onboarding Flow (1-2 days, LOW)
- Create OnboardingScreen.kt
- Add first-launch detection
- Add skip/complete logic
Total: 5-7 days for Phase 3
Testing Checklist¶
Critical Path Testing (Before Launch)¶
Core Features: - [ ] Add supplement via DSLD search - [ ] Add supplement manually - [ ] Edit supplement details - [ ] Record dose with stock deduction - [ ] View dose history - [ ] Delete supplement
Scheduling: - [ ] Create schedule profile - [ ] Add supplement to schedule - [ ] View today's schedules - [ ] Mark schedule as taken - [ ] Skip schedule - [ ] Receive schedule notification
Nutrients: - [ ] View nutrient list with RDA - [ ] Star/unstar nutrients - [ ] View starred nutrients on Today tab - [ ] View nutrient detail with supplement sources - [ ] Check RDA calculations match iOS
Analytics: - [ ] View 7-day nutrient trends - [ ] View 30-day nutrient trends - [ ] View adherence statistics - [ ] Check data matches iOS calculations
User Profile: - [ ] Enter personal information - [ ] Change date of birth and see RDA update - [ ] Toggle gender and see RDA update - [ ] Toggle pregnancy and see RDA update
Data Management: - [ ] Export data to JSON file - [ ] Import data from JSON file - [ ] Verify data integrity after import - [ ] Check statistics display
Subscriptions: - [ ] Purchase subscription (sandbox) - [ ] Verify tier updates - [ ] Test AI usage limits - [ ] Test restore purchases - [ ] Check server quota sync
Success Criteria for 100% Parity¶
Must Have (Launch Blockers): - ✅ All core CRUD operations working - ✅ Schedule system fully functional - ✅ Nutrient tracking with RDA calculations - ⚠️ Analytics dashboard implemented - ⚠️ Personal settings UI implemented - ⚠️ Subscription purchase flow working - ⚠️ Data export/import working
Should Have (Post-Launch Priority): - ⚠️ Barcode scanning working - ⚠️ Notification settings UI - ⚠️ Label scanning working
Nice to Have (Deferred): - Food photo tracking (beta on iOS) - Onboarding flow (optional) - Advanced app settings
Known Differences from iOS (Acceptable)¶
Platform-Specific Differences: - StoreKit vs Google Play Billing: Different APIs but equivalent functionality - Privacy Policy/Terms: Android uses web links, iOS has in-app WebView (both acceptable) - Dark Mode: Android uses Material3 dynamic theming (better than iOS) - Haptic Feedback: Different APIs but equivalent functionality - Camera API: CameraX vs AVFoundation (different implementation, same result)
Design Differences: - Android uses Material Design 3, iOS uses native SwiftUI components - Navigation patterns differ (bottom nav vs tab bar) - Typography and spacing follow platform guidelines
Conclusion¶
Current Status: Android app is 95% complete with solid foundation (database, services, navigation).
Remaining Work: 5% focused on: 1. Analytics dashboard (user-facing) 2. Personal settings UI (data input) 3. Subscription management (monetization) 4. Data export/import (user safety)
Estimated Completion: 2-3 weeks for full launch parity
Recommendation: Focus on Phase 1 (Critical for Launch) to achieve minimum viable product, then enhance with Phase 2 features.