Skip to main content

Overview

The exercise types define how exercises are structured, planned, and tracked in the Rippler app. These types cover everything from basic exercise definitions to detailed set-by-set logging.

Exercise

Base interface for exercise definitions.
export interface Exercise {
  id: string;
  name: string;
  notes?: string;
}
id
string
required
Unique identifier for the exercise
name
string
required
Display name of the exercise (e.g., “Squat”, “Bench Press”, “Deadlift”)
notes
string
Optional notes about the exercise, such as form cues, variations, or equipment requirements

Usage

The Exercise interface represents the base definition of a movement in your exercise library. It’s used to maintain a catalog of all available exercises in the app.

TargetExercise

Defines prescribed training targets for an exercise in a planned workout.
export interface TargetExercise {
  tier: Tier;
  exercise: string;
  weight: number | string;
  reps: number | string;
  sets: number | string;
}
tier
Tier
required
Training tier classification. See Tier for available values (T1, T2, T3a, T3b).
exercise
string
required
Name or identifier of the exercise to perform
weight
number | string
required
Target weight to lift. Can be a number (in lbs/kg) or string for special cases like “BW” (bodyweight), “BW+45”, etc.
reps
number | string
required
Target repetitions per set. Can be a number or string like “AMRAP” (as many reps as possible), “5-8”, etc.
sets
number | string
required
Target number of sets. Can be a number or string for special protocols

Usage

TargetExercise defines what you’re supposed to do in a planned workout. It’s used in WorkoutDay to prescribe training targets.
The flexible number | string types allow for both precise numeric targets and qualitative descriptors common in strength training programs.

LoggedExercise

Records actual performance data for an exercise in a completed workout.
export interface LoggedExercise {
  tier: Tier;
  exercise: string;
  sets: LoggedSet[];
  notes?: string;
}
tier
Tier
required
The tier classification for this exercise. See Tier.
exercise
string
required
Name or identifier of the exercise that was performed
sets
LoggedSet[]
required
Array of individual set performances. See LoggedSet below for details.
notes
string
Optional notes recorded during or after the exercise (e.g., “felt heavy”, “easy”, form feedback)

Usage

LoggedExercise captures your actual workout performance, enabling progress tracking and analysis. Unlike TargetExercise, this contains detailed set-by-set data.

LoggedSet

Records performance data for a single set within an exercise.
export interface LoggedSet {
  setNumber: number;
  weight: number | string;
  reps: number | string;
  completed: boolean;
}
setNumber
number
required
The set number in sequence (1, 2, 3, etc.)
weight
number | string
required
Actual weight lifted. Can be numeric or string for bodyweight variations
reps
number | string
required
Actual repetitions completed. Can be numeric or string descriptors
completed
boolean
required
Whether this set was successfully completed

Usage

LoggedSet provides granular tracking of each individual set, allowing detailed analysis of workout performance.
The completed flag helps distinguish between sets that were attempted vs. skipped, which is useful for tracking fatigue or identifying failed sets.

Type Relationships

Planning vs. Logging

TargetExercise defines what you plan to do, while LoggedExercise records what you actually did. This separation allows you to compare prescribed vs. actual performance.

Build docs developers (and LLMs) love