fitness: add 5 default workout templates and new exercises

Add all 5 PPL+Upper/Lower templates matching the target split,
with Day 3 (Legs) adjusted to include Bulgarian split squats and
standing calf raises, and Day 5 (Lower) reworked with front squats,
hip thrusts, and goblet squats — all equipment-free of machines.

Also adds incline row, decline crunch, flat leg raise, and nordic
hamstring curl to the exercise list, and updates the WorkoutTemplate
model to use exerciseId instead of name for exercise references.
This commit is contained in:
2026-03-19 08:32:20 +01:00
parent 1c62819d18
commit 5198340c49
4 changed files with 205 additions and 17 deletions
+2 -2
View File
@@ -53,8 +53,8 @@ export const POST: RequestHandler = async ({ request, locals }) => {
// Validate exercises structure
for (const exercise of exercises) {
if (!exercise.name || !exercise.sets || !Array.isArray(exercise.sets) || exercise.sets.length === 0) {
return json({ error: 'Each exercise must have a name and at least one set' }, { status: 400 });
if (!exercise.exerciseId || !exercise.sets || !Array.isArray(exercise.sets) || exercise.sets.length === 0) {
return json({ error: 'Each exercise must have an exerciseId and at least one set' }, { status: 400 });
}
for (const set of exercise.sets) {
+140 -13
View File
@@ -7,7 +7,7 @@ import { WorkoutTemplate } from '$models/WorkoutTemplate';
const defaultTemplates = [
{
name: 'Day 1 - Pull',
description: 'Back and biceps focused pull day',
description: 'Back, biceps, and shoulders pull day',
exercises: [
{
exerciseId: 'bent-over-row-barbell',
@@ -27,6 +27,30 @@ const defaultTemplates = [
],
restTime: 120
},
{
exerciseId: 'incline-row-dumbbell',
sets: [
{ reps: 12, weight: 16, rpe: 7 },
{ reps: 12, weight: 16, rpe: 8 }
],
restTime: 90
},
{
exerciseId: 'upright-row-barbell',
sets: [
{ reps: 12, weight: 30, rpe: 7 },
{ reps: 12, weight: 30, rpe: 8 }
],
restTime: 90
},
{
exerciseId: 'decline-crunch',
sets: [
{ reps: 15, rpe: 7 },
{ reps: 15, rpe: 8 }
],
restTime: 60
},
{
exerciseId: 'lateral-raise-dumbbell',
sets: [
@@ -47,7 +71,7 @@ const defaultTemplates = [
},
{
name: 'Day 2 - Push',
description: 'Chest, shoulders, and triceps push day',
description: 'Chest, triceps, and biceps push day',
exercises: [
{
exerciseId: 'bench-press-barbell',
@@ -74,6 +98,14 @@ const defaultTemplates = [
],
restTime: 90
},
{
exerciseId: 'bench-press-close-grip-barbell',
sets: [
{ reps: 10, weight: 60, rpe: 7 },
{ reps: 10, weight: 60, rpe: 8 }
],
restTime: 120
},
{
exerciseId: 'hammer-curl-dumbbell',
sets: [
@@ -94,7 +126,7 @@ const defaultTemplates = [
},
{
name: 'Day 3 - Legs',
description: 'Lower body leg day',
description: 'Quad, hamstring, and calf focused leg day',
exercises: [
{
exerciseId: 'squat-barbell',
@@ -109,31 +141,126 @@ const defaultTemplates = [
exerciseId: 'romanian-deadlift-barbell',
sets: [
{ reps: 10, weight: 70, rpe: 7 },
{ reps: 10, weight: 70, rpe: 8 }
{ reps: 10, weight: 70, rpe: 8 },
{ reps: 10, weight: 70, rpe: 9 }
],
restTime: 120
},
{
exerciseId: 'leg-press-machine',
exerciseId: 'bulgarian-split-squat-dumbbell',
sets: [
{ reps: 12, weight: 100, rpe: 7 },
{ reps: 12, weight: 100, rpe: 8 }
{ reps: 10, weight: 16, rpe: 7 },
{ reps: 10, weight: 16, rpe: 8 }
],
restTime: 120
},
{
exerciseId: 'leg-curl-machine',
exerciseId: 'calf-raise-standing',
sets: [
{ reps: 12, weight: 40, rpe: 7 },
{ reps: 12, weight: 40, rpe: 8 }
{ reps: 15, rpe: 7 },
{ reps: 15, rpe: 8 },
{ reps: 15, rpe: 9 }
],
restTime: 60
}
]
},
{
name: 'Day 4 - Upper',
description: 'Full upper body day — shoulders, chest, back, and core',
exercises: [
{
exerciseId: 'overhead-press-barbell',
sets: [
{ reps: 8, weight: 40, rpe: 7 },
{ reps: 8, weight: 40, rpe: 8 }
],
restTime: 120
},
{
exerciseId: 'bench-press-dumbbell',
sets: [
{ reps: 10, weight: 28, rpe: 7 },
{ reps: 10, weight: 28, rpe: 8 }
],
restTime: 120
},
{
exerciseId: 'chin-up',
sets: [
{ reps: 6, rpe: 8 },
{ reps: 6, rpe: 9 }
],
restTime: 120
},
{
exerciseId: 'bench-press-close-grip-barbell',
sets: [
{ reps: 10, weight: 60, rpe: 7 },
{ reps: 10, weight: 60, rpe: 8 }
],
restTime: 120
},
{
exerciseId: 'decline-crunch',
sets: [
{ reps: 15, rpe: 7 },
{ reps: 15, rpe: 8 }
],
restTime: 60
},
{
exerciseId: 'flat-leg-raise',
sets: [
{ reps: 15, rpe: 7 },
{ reps: 15, rpe: 8 }
],
restTime: 60
}
]
},
{
name: 'Day 5 - Lower',
description: 'Glute, quad, and hamstring focused lower day',
exercises: [
{
exerciseId: 'front-squat-barbell',
sets: [
{ reps: 8, weight: 60, rpe: 7 },
{ reps: 8, weight: 60, rpe: 8 },
{ reps: 8, weight: 60, rpe: 9 }
],
restTime: 150
},
{
exerciseId: 'romanian-deadlift-dumbbell',
sets: [
{ reps: 10, weight: 24, rpe: 7 },
{ reps: 10, weight: 24, rpe: 8 }
],
restTime: 120
},
{
exerciseId: 'hip-thrust-barbell',
sets: [
{ reps: 10, weight: 60, rpe: 7 },
{ reps: 10, weight: 60, rpe: 8 }
],
restTime: 120
},
{
exerciseId: 'goblet-squat-dumbbell',
sets: [
{ reps: 12, weight: 20, rpe: 7 },
{ reps: 12, weight: 20, rpe: 8 }
],
restTime: 90
},
{
exerciseId: 'calf-raise-machine',
exerciseId: 'calf-raise-standing',
sets: [
{ reps: 15, weight: 60, rpe: 7 },
{ reps: 15, weight: 60, rpe: 8 }
{ reps: 15, rpe: 7 },
{ reps: 15, rpe: 8 }
],
restTime: 60
}