Skip to main content

Overview

The workout types define the core data structures for managing training programs, tracking daily workouts, and overriding default targets in the Rippler app.

WorkoutDay

Represents a planned workout day with target exercises.
export interface WorkoutDay {
  week: number;
  day: string;
  dateSerial: number;
  exercises: TargetExercise[];
}
week
number
required
The week number in the training program (e.g., 1, 2, 3…)
day
string
required
The day identifier (e.g., “Monday”, “Day 1”, “A”)
dateSerial
number
required
A serialized date value used for scheduling and sorting workouts chronologically
exercises
TargetExercise[]
required
Array of exercises planned for this workout day. See TargetExercise for details.

Usage

WorkoutDay is used to structure planned training sessions within a program. Each day contains multiple exercises with prescribed sets, reps, and weights.

LoggedWorkout

Represents a completed workout session with actual performance data.
export interface LoggedWorkout {
  id: string;
  week: number;
  day: string;
  dateLogged: string;
  exercises: LoggedExercise[];
  completed: boolean;
}
id
string
required
Unique identifier for the logged workout session
week
number
required
The week number this workout belongs to in the training program
day
string
required
The day identifier matching the planned WorkoutDay
dateLogged
string
required
ISO date string when the workout was completed (e.g., “2026-02-28”)
exercises
LoggedExercise[]
required
Array of exercises that were performed. See LoggedExercise for details.
completed
boolean
required
Whether the entire workout session was completed

Usage

LoggedWorkout tracks actual training sessions, allowing users to review their performance history and track progress over time.
The completed flag can be used to distinguish between partial workouts (incomplete) and fully finished sessions.

WorkoutProgram

Represents a complete training program with multiple weeks of planned workouts.
export interface WorkoutProgram {
  exercises: string[];
  weeks: Record<string, WorkoutDay[]>;
}
exercises
string[]
required
Complete list of all unique exercises included in the program
weeks
Record<string, WorkoutDay[]>
required
Dictionary mapping week identifiers (e.g., “1”, “2”, “3”) to arrays of WorkoutDay objects for that week

Usage

WorkoutProgram structures an entire training cycle, typically spanning multiple weeks. The exercises array provides a master list of all movements in the program, while weeks organizes the daily workouts chronologically.
The exercises array is useful for displaying a program overview or filtering/searching exercises across the entire program.

TargetOverride

Allows customization of prescribed targets for specific exercises in the program.
export interface TargetOverride {
  week: number;
  day: string;
  exerciseIndex: number;
  weight?: number | string;
  reps?: number | string;
  sets?: number | string;
}
week
number
required
The week number where the override applies
day
string
required
The day identifier where the override applies
exerciseIndex
number
required
Zero-based index of the exercise within the WorkoutDay.exercises array
weight
number | string
Override for the target weight. Can be numeric or string (e.g., “BW” for bodyweight)
reps
number | string
Override for the target reps. Can be numeric or string (e.g., “AMRAP”)
sets
number | string
Override for the target sets. Can be numeric or string for special protocols

Usage

TargetOverride enables users to adjust program prescriptions without modifying the base program. This is useful for:
  • Adjusting weights based on individual strength levels
  • Modifying rep schemes for injury management
  • Personalizing programs while maintaining the original template
All override fields are optional. Only provide the fields you want to override; other fields will use the default values from TargetExercise.

Build docs developers (and LLMs) love