Workout Tracker @import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;600;700&display=swap'); body { font-family: 'Inter', sans-serif; background-color: #f3f4f6; } .form-container { max-width: 600px; margin: auto; background-color: white; padding: 2.5rem; border-radius: 1rem; box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); }

Log Your Workout Set

Select your Exercise W1 Barbell Squat W1 Dumbbell Romanian Deadlift (RDL) W1 Leg Press W1 Overhead Press (Dumbbell) W1 Overhead Press (Barbell) W1 Seated Dumbbell Tricep Extension W2 Pull Ups W2 Lat Pulldowns W2 Bent-Over Barbell Row W2 Dumbbell Row W2 Incline Dumbbell Press W2 Bent-Over Barbell Row W2 Seated Cable Row W2 Dumbbell Bicep Curl W3 Romanian Deadlift (RDL) W3 Leg Extensions W3 Bulgarian Split Squats W3 Bench Press W3 Dumbbell Press W3 Dips W3 Close grip Bench Press W4 Seated Cable Row W4 Pull Ups W4 Chin Ups W4 Dumbbell Lateral Raises W4 Face Pulls W4 Hammer Curls
Select your effort RPE 10 (0 RIR) - Max Effort RPE 9.5 (0.5 RIR) RPE 9 (1 RIR) - Very Hard RPE 8.5 (1.5 RIR) RPE 8 (2 RIR) - Hard RPE 7.5 (2.5 RIR) RPE 7 (3 RIR) - Moderate

Log Your Recovery Session

Select your activity Sauna Steam Room Meditation Relaxation
// Paste the unique URL from your published Google Apps Script here const scriptURL = 'YOUR_GOOGLE_APPS_SCRIPT_URL_HERE'; const workoutForm = document.getElementById('workoutForm'); const recoveryForm = document.getElementById('recoveryForm'); const statusMessageWorkout = document.getElementById('statusMessageWorkout'); const submitBtnWorkout = document.getElementById('submitBtnWorkout'); const statusMessageRecovery = document.getElementById('statusMessageRecovery'); const submitBtnRecovery = document.getElementById('submitBtnRecovery'); // Handles the submission for both forms async function handleSubmit(e, form, statusMessage, submitBtn) { e.preventDefault(); statusMessage.textContent = 'Logging session...'; statusMessage.className = 'text-center text-sm font-medium mt-4 text-gray-500'; submitBtn.disabled = true; const formData = new FormData(form); const data = {}; for (let [key, value] of formData.entries()) { data[key] = value; } data.timestamp = new Date().toISOString(); try { const response = await fetch(scriptURL, { method: 'POST', body: JSON.stringify(data), headers: { 'Content-Type': 'application/json' } }); if (response.ok) { statusMessage.textContent = 'Success! Session logged.'; statusMessage.className = 'text-center text-sm font-medium mt-4 text-green-600'; form.reset(); // Clear the form for the next entry } else { statusMessage.textContent = 'Error logging session. Please try again.'; statusMessage.className = 'text-center text-sm font-medium mt-4 text-red-600'; } } catch (error) { console.error('Error:', error); statusMessage.textContent = 'Network error. Check your connection.'; statusMessage.className = 'text-center text-sm font-medium mt-4 text-red-600'; } finally { submitBtn.disabled = false; } } // Listeners for each form workoutForm.addEventListener('submit', (e) => { handleSubmit(e, workoutForm, statusMessageWorkout, submitBtnWorkout); }); recoveryForm.addEventListener('submit', (e) => { handleSubmit(e, recoveryForm, statusMessageRecovery, submitBtnRecovery); });
Subscription Form
Workout Tracker @import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;600;700&display=swap'); body { font-family: 'Inter', sans-serif; background-color: #f3f4f6; } .form-container { max-width: 600px; margin: auto; background-color: white; padding: 2.5rem; border-radius: 1rem; box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); }

Log Your Workout Set

Select your Exercise W1 Barbell Squat W1 Dumbbell Romanian Deadlift (RDL) W1 Leg Press W1 Overhead Press (Dumbbell) W1 Overhead Press (Barbell) W1 Seated Dumbbell Tricep Extension W2 Pull Ups W2 Lat Pulldowns W2 Bent-Over Barbell Row W2 Dumbbell Row W2 Incline Dumbbell Press W2 Seated Cable Row W2 Dumbbell Bicep Curl W3 Romanian Deadlift (RDL) W3 Leg Extensions W3 Bulgarian Split Squats W3 Bench Press W3 Dumbbell Press W3 Dips W3 Close grip Bench Press W4 Seated Cable Row W4 Pull Ups W4 Chin Ups W4 Dumbbell Lateral Raises W4 Face Pulls W4 Hammer Curls
Select your effort RPE 10 (0 RIR) - Max Effort RPE 9.5 (0.5 RIR) RPE 9 (1 RIR) - Very Hard RPE 8.5 (1.5 RIR) RPE 8 (2 RIR) - Hard RPE 7.5 (2.5 RIR) RPE 7 (3 RIR) - Moderate

Log Your Recovery Session

Select your activity Sauna Steam Room Meditation Relaxation
// Paste the unique URL from your published Google Apps Script here const scriptURL = 'YOUR_GOOGLE_APPS_SCRIPT_URL_HERE'; const workoutForm = document.getElementById('workoutForm'); const recoveryForm = document.getElementById('recoveryForm'); const statusMessageWorkout = document.getElementById('statusMessageWorkout'); const submitBtnWorkout = document.getElementById('submitBtnWorkout'); const statusMessageRecovery = document.getElementById('statusMessageRecovery'); const submitBtnRecovery = document.getElementById('submitBtnRecovery'); // Handles the submission for both forms async function handleSubmit(e, form, statusMessage, submitBtn) { e.preventDefault(); statusMessage.textContent = 'Logging session...'; statusMessage.className = 'text-center text-sm font-medium mt-4 text-gray-500'; submitBtn.disabled = true; const formData = new FormData(form); const data = {}; for (let [key, value] of formData.entries()) { data[key] = value; } data.timestamp = new Date().toISOString(); try { const response = await fetch(scriptURL, { method: 'POST', body: JSON.stringify(data), headers: { 'Content-Type': 'application/json' } }); if (response.ok) { statusMessage.textContent = 'Success! Session logged.'; statusMessage.className = 'text-center text-sm font-medium mt-4 text-green-600'; form.reset(); // Clear the form for the next entry } else { statusMessage.textContent = 'Error logging session. Please try again.'; statusMessage.className = 'text-center text-sm font-medium mt-4 text-red-600'; } } catch (error) { console.error('Error:', error); statusMessage.textContent = 'Network error. Check your connection.'; statusMessage.className = 'text-center text-sm font-medium mt-4 text-red-600'; } finally { submitBtn.disabled = false; } } // Listeners for each form workoutForm.addEventListener('submit', (e) => { handleSubmit(e, workoutForm, statusMessageWorkout, submitBtnWorkout); }); recoveryForm.addEventListener('submit', (e) => { handleSubmit(e, recoveryForm, statusMessageRecovery, submitBtnRecovery); });