Skip to main content

MoHealth

"The Health Hub" — "I sync with your health apps"

Status: ❌ Future

MoHealth will integrate with platform health services like Apple Health and Google Fit.


Purpose​

  • Push Mo workouts to health platforms
  • Pull health metrics into Mo
  • Centralize health data
  • Enable cross-app data sharing
  • Maintain health record continuity

Supported Platforms (Planned)​

Apple Health (HealthKit)​

MetricDirectionPriority
WorkoutsPush/PullHigh
WeightPush/PullHigh
Body Fat %Push/PullMedium
SleepPullMedium
Heart RatePullMedium
StepsPullLow
Active EnergyPush/PullMedium

Google Fit​

MetricDirectionPriority
WorkoutsPush/PullHigh
WeightPush/PullHigh
Heart RatePullMedium
SleepPullMedium
StepsPullLow

Samsung Health​

MetricDirectionPriority
WorkoutsPushMedium
WeightPush/PullMedium
SleepPullMedium

Data Model​

interface HealthPlatformConnection {
id: string;
userId: string;
platform: HealthPlatform;

// Permissions
permissions: HealthPermission[];

// Sync settings
autoSync: boolean;
pushWorkouts: boolean;
pullMetrics: boolean;

// Status
status: 'connected' | 'disconnected' | 'permissions_needed';
lastSyncAt: Date | null;

createdAt: Date;
}

interface HealthSyncResult {
platform: HealthPlatform;
syncedAt: Date;

pushed: {
workouts: number;
weightLogs: number;
};

pulled: {
sleepSessions: number;
heartRateSamples: number;
steps: number;
};

errors: HealthSyncError[];
}

type HealthPlatform = 'apple_health' | 'google_fit' | 'samsung_health';

type HealthPermission =
| 'read_workouts'
| 'write_workouts'
| 'read_weight'
| 'write_weight'
| 'read_sleep'
| 'read_heart_rate'
| 'read_steps';

Workout Push Format​

When pushing Mo workouts to health platforms:

interface HealthWorkout {
// Core data
activityType: 'traditional_strength_training';
startDate: Date;
endDate: Date;
duration: number; // seconds

// Metrics
totalEnergyBurned: number; // kcal (estimated)

// Metadata
sourceName: 'Mo';
sourceVersion: string;

// Mo-specific (stored as metadata)
metadata: {
sessionId: string;
templateDay: string;
totalVolume: number;
setCount: number;
exerciseCount: number;
};
}

Permission Flow​

1. User taps "Connect Apple Health"
2. Show permissions explanation screen
3. Request HealthKit authorization
4. User approves specific permissions
5. Save connection status
6. Initial sync begins

Planned API Endpoints​

EndpointMethodDescription
/api/healthGETGet connection status
/api/health/connectPOSTConnect platform
/api/health/permissionsGETCheck permissions
/api/health/syncPOSTTrigger sync
/api/health/settingsPATCHUpdate sync settings

Privacy Considerations​

  • Request minimum necessary permissions
  • Clear explanation of data usage
  • User controls what data is shared
  • Option to disconnect at any time
  • No data sold to third parties

Implementation Tasks​

  • Apple HealthKit integration
  • Google Fit API integration
  • Permission request flows
  • Bi-directional workout sync
  • Weight log sync
  • Health settings UI