When the screens started multiplying and nothing felt clean, I realized I was solving it at the wrong level. There’s a workout in an inactive state and an active state. An exercise inactive and active. A program inactive and active. Same handful of objects, just different modes.
So instead of designing screen after screen, name the primitives first, the core objects and the states they can be in. Once those are clear, the screens mostly fall out of them, and you stop building five slightly different versions of the same thing.
Are you designing screens, or the small set of primitives the screens are made of?