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