- Create UserController, WorkoutController, and SessionController to expose application use cases via REST endpoints
- Add request and response DTOs alongside web mappers for the User, Workout, and Session domains
- Introduce GlobalExceptionHandler to handle domain-specific exceptions and return HTTP 400 Bad Request responses
- Add Springdoc OpenAPI and Scalar dependencies to build.gradle for API documentation
- Configure OpenAPI and Scalar settings in the base and dev application properties
- Create Spring Data Mongo entities and repositories for User, Session, WorkoutPlan, WorkoutDay, and WorkoutExercise
- Add mappers to handle conversions between domain models and persistence entities
- Create persistence adapters implementing the save and load output ports for each domain
- Replace empty MongoAdapter placeholder files with fully functional PersistenceAdapter classes
- Remove unused UUID import from the User domain model
- Add state transition and update methods to User, WorkoutDay, WorkoutPlan, and WorkoutExercise domain models
- Create service implementations for managing Users, WorkoutPlans, WorkoutDays, WorkoutExercises, and Sessions
- Add Spring Configuration classes (UserConfig, WorkoutConfig, SessionConfig) to register service beans
- Fix calculation of total time in WorkoutDay and add estimatedTime logic to WorkoutExercise
- Move domain models and exceptions into their corresponding modules
- Fix typos in interface names, renaming 'UserCase' to 'UseCase'
- Reorganize input and output ports for each specific domain
- Create dedicated web controllers and Mongo persistence adapters for the new modules
- Clean up unused application ports and legacy adapters