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:
@@ -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) {
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user