Skip to main content

MoGear

"The Inventory" — "I know what tools you have"

Status: ✅ Built (via MoSettings)

MoGear tracks available equipment for the user. Currently implemented as part of MoSettings via the equipmentLevel field.


Purpose

  • Track available equipment
  • Filter exercise suggestions based on equipment
  • Enable gym-specific workout customization

Current Implementation

MoGear is currently simplified as an equipmentLevel enum in MoSettings:

type EquipmentLevel = 'full_gym' | 'home_gym' | 'bodyweight';

Equipment by Level

LevelAvailable Equipment
full_gymEverything: barbells, dumbbells, machines, cables, racks
home_gymBarbell, dumbbells, bench, squat rack, pull-up bar
bodyweightNo equipment (bodyweight exercises only)

Usage

import { getPreferences } from '@/lib/mo-self';

const prefs = await getPreferences(userId);
const equipmentLevel = prefs.equipmentLevel;

// Use in exercise filtering
const exercises = await getExerciseAlternatives({
pattern: 'horizontal_push',
equipment: equipmentLevel
});

Integration Points

Provides to:

  • /api/exercises/alternatives (equipment filtering)
  • MoSuggest (exercise selection)
  • Workout page (exercise swaps)

Receives from:

  • MoSettings (equipment level setting)
  • Onboarding flow

Future Enhancements

Full MoGear implementation would include:

Detailed Equipment Tracking

interface UserEquipment {
userId: string;

// Barbells
hasStraightBar: boolean;
hasEzBar: boolean;
hasTrapBar: boolean;

// Dumbbells
hasDumbbells: boolean;
dumbbellMaxWeight: number;

// Machines
machines: MachineType[];

// Cardio
cardioEquipment: CardioType[];

// Other
hasPullUpBar: boolean;
hasDipStation: boolean;
hasCables: boolean;
hasResistanceBands: boolean;
}

Implementation Tasks

  • Create dedicated equipment table
  • Build equipment selection UI
  • Granular exercise filtering
  • Gym profile presets (save equipment setups)