Index: backend/src/main/java/com/trekr/backend/dto/discipline/UpdateTaskStatusRequest.java
===================================================================
--- backend/src/main/java/com/trekr/backend/dto/discipline/UpdateTaskStatusRequest.java	(revision 447c39f7111f1415e8f44660911d00bb61568780)
+++ backend/src/main/java/com/trekr/backend/dto/discipline/UpdateTaskStatusRequest.java	(revision 447c39f7111f1415e8f44660911d00bb61568780)
@@ -0,0 +1,19 @@
+package com.trekr.backend.dto.discipline;
+
+import com.trekr.backend.entity.discipline.TaskStatus;
+
+public class UpdateTaskStatusRequest {
+    private TaskStatus status;
+
+    public UpdateTaskStatusRequest() {
+    }
+
+    public TaskStatus getStatus() {
+        return status;
+    }
+
+    public void setStatus(TaskStatus status) {
+        this.status = status;
+    }
+}
+
Index: backend/src/main/java/com/trekr/backend/dto/training/CreateTrainingSessionRequest.java
===================================================================
--- backend/src/main/java/com/trekr/backend/dto/training/CreateTrainingSessionRequest.java	(revision 42da64dc0d28f9380336816f6fb82c7572d0021d)
+++ backend/src/main/java/com/trekr/backend/dto/training/CreateTrainingSessionRequest.java	(revision 447c39f7111f1415e8f44660911d00bb61568780)
@@ -4,6 +4,8 @@
 import jakarta.validation.constraints.NotBlank;
 import jakarta.validation.constraints.NotNull;
+import jakarta.validation.constraints.PastOrPresent;
 
 import java.math.BigDecimal;
+import java.time.LocalDate;
 
 public class CreateTrainingSessionRequest {
@@ -21,4 +23,7 @@
     @DecimalMin(value = "0", inclusive = true)
     private BigDecimal calories;
+
+    @PastOrPresent
+    private LocalDate date;
 
     public CreateTrainingSessionRequest() {
@@ -56,3 +61,11 @@
         this.calories = calories;
     }
+
+    public LocalDate getDate() {
+        return date;
+    }
+
+    public void setDate(LocalDate date) {
+        this.date = date;
+    }
 }
Index: backend/src/main/java/com/trekr/backend/entity/discipline/TaskStatus.java
===================================================================
--- backend/src/main/java/com/trekr/backend/entity/discipline/TaskStatus.java	(revision 447c39f7111f1415e8f44660911d00bb61568780)
+++ backend/src/main/java/com/trekr/backend/entity/discipline/TaskStatus.java	(revision 447c39f7111f1415e8f44660911d00bb61568780)
@@ -0,0 +1,8 @@
+package com.trekr.backend.entity.discipline;
+
+public enum TaskStatus {
+    NOT_STARTED,
+    IN_PROGRESS,
+    FINISHED
+}
+
Index: backend/src/main/java/com/trekr/backend/service/TrainingService.java
===================================================================
--- backend/src/main/java/com/trekr/backend/service/TrainingService.java	(revision 42da64dc0d28f9380336816f6fb82c7572d0021d)
+++ backend/src/main/java/com/trekr/backend/service/TrainingService.java	(revision 447c39f7111f1415e8f44660911d00bb61568780)
@@ -177,5 +177,13 @@
         session.setDuration(durationMinutes);
         session.setCalories(calories);
-        session.setDate(LocalDate.now());
+        // Allow client to supply a date (past or present). If not provided, use today.
+        java.time.LocalDate suppliedDate = request.getDate();
+        if (suppliedDate == null) {
+            suppliedDate = LocalDate.now();
+        }
+        if (suppliedDate.isAfter(LocalDate.now())) {
+            throw new RuntimeException("Date cannot be in the future");
+        }
+        session.setDate(suppliedDate);
 
         TrainingSession saved = trainingSessionRepository.save(session);
