I started developing an app for tactical barbell. I just used flags for things like AMRAP.
Activities
name:string
description:string
Workouts
name:string
has many activities through workout_activities
WorkoutActivities
activity_id
workout_id
position:integer
reps:integer
distance:integer
time:integer
time_direction:string (could do bool but I like to be able to know from a glance at the db)
amrep:bool
Obviously there are a few types/modifiers I am not thinking of right now since I don’t have the code with me. But that is 2 tables and a join that should allow you to model any workout possible. Rests are just another workout activity for time. If you want to do tracking you’ll also need a workout results table too.