You added five kilos to the leg press six weeks ago and it hasn't moved since. You think your last set of three on bench was 80kg, but you're not certain because you haven't tracked it with any precision and you might be thinking of a different session. You're making decisions about progressive overload based on gut feel and fractured memory, which means you're probably leaving performance on the floor.

The bcFitness system was built for exactly this failure mode: the gym regular who shows up consistently but loses the data that would tell them whether they're actually progressing.

Three Libraries, One Coherent System

The template runs three linked Memento databases: bcFitnessExercises, bcFitnessVisits, and the main bcFitnessWorkouts library.

The Exercises library is the reference layer. Each exercise record defines the movement by name, categorizes it as Cardio or Weight training, specifies the method (Free or Machine), and captures parameters — the setup notes that don't live anywhere else. Cable row seat height, lat pulldown grip width, the specific incline angle you've found works for your shoulder — these are parameters. Without them, you spend two minutes every session re-discovering what you already established. The comment field in the exercise record holds clinical notes: contraindications, injury history, coaching cues that took you six months to internalize.

The Visits library logs the session envelope: begin and end datetime, facility, objectives checked for the session (Build lower body, Tone upper body, Cardio, etc.), and phases completed (Weights, Cardio, Table tennis, Swimming, Shower, Study). The phases list is a window into how this particular athlete uses their gym time — it's a full-facility log, not just a weights tracker. Session duration calculated from begin/end is the most honest measure of training volume that most people never look at.

Where the Progressive Overload Decision Lives

The Workouts library is the transaction layer — one record per exercise per session, linked to both the Visit and the Exercise.

set1Weight, set1Repetitions, set1End capture the first set, with End as a text field for noting failure, partial reps, or technique breakdown. The pattern repeats for sets two and three. Three sets are the standard structure; the session field handles multi-session tracking within a visit for anything more complex.

The decisions about next session load are captured immediately after the set data:

nextWeightBuild and nextRepsBuild — Maintain / Increase / Decrease — for hypertrophy-focused work.
nextWeightTone and nextRepsTone — the same three-option decision — for endurance-focused work.

These fields are completed at the end of each exercise, while the exertion is still fresh. The next time you pull up that exercise's records before loading the bar, the decision from last session is already made and documented. You don't remember whether you completed all three sets cleanly and decided to go up — it's in the field.

The objective radio on the Workout record — Build, Tone, Cardio — means you can filter the entire session history for, say, all Build-objective records on a specific exercise and graph the weight progression over six months. That's the data that tells you whether the program is working.