A training belongs to one program and consists of a series of exercises (rows), each with sets, reps, rest, tempo, and load. These rows live in a training table you can adjust, and where results are logged. For every exercise you also immediately see an estimation, plus this athlete's most recent and best result on that exercise.
Instead of building everything manually, you can:
The app takes into account everything known about the athlete (level, gender, injuries, preferences) plus every setting of the program (goal, periodization, category split, …) to build a complete training.
The same logic, but to quickly pick one loose exercise — for example to replace an existing exercise in a training, or to add an extra exercise during the training itself.
In both cases, exercises and systems with a red injury status are never chosen, and exercises with an orange status are chosen but always with a warning.
For an athlete who has just started, and for whom there's no history yet to generate anything meaningful automatically, fixed starter trainings are available — one per level (1 to 5) — that you can assign right away as a safe first training.
During or after a training you log the results actually achieved: what load and how many reps the athlete really hit, and how hard it felt.
These results are the basis for an athlete's estimations and statistics — the more complete and up to date you keep your results, the better the app can estimate and advise.