Skip to content

Develop - #58

Merged
lgzarturo merged 3 commits into
mainfrom
develop
Apr 7, 2026
Merged

Develop#58
lgzarturo merged 3 commits into
mainfrom
develop

Conversation

@lgzarturo

Copy link
Copy Markdown
Owner

Se reorganizó la estructura del proyecto para simplificar la arquitectura y hacer que el código refleje mejor el dominio del negocio.

Antes se usaba una arquitectura hexagonal, pero en la práctica generaba demasiada complejidad:

  • 5 o 6 niveles de anidación por feature.
  • Interfaces port con una sola implementación, lo que agregaba ceremonia sin aportar valor real.
  • Un desarrollador nuevo necesitaba entender la arquitectura antes de poder entender el código.

La nueva estructura adopta un enfoque orientado a features, siguiendo el principio de Screaming Architecture, donde la estructura del proyecto refleja directamente los conceptos del negocio.

Cada feature está contenida en su propio paquete dentro de features/ y agrupa sus componentes principales: controlador, servicio, repositorio, entidades y DTOs.

Las reglas principales de la nueva estructura son:

  • Un paquete por feature: features/hotels, features/users, features/ping.
  • Capas internas simples dentro de cada feature (controller, service, repository, dto, etc.).
  • Máximo dos niveles de profundidad para evitar anidación excesiva.
  • Eliminación de ports y adapters artificiales cuando solo tenían una implementación.
  • El service actúa como capa de negocio, manteniendo la lógica del dominio.

Con esto se busca reducir la complejidad, mejorar la legibilidad del código y facilitar que otros desarrolladores entiendan el sistema a partir del dominio en lugar de la arquitectura.

- listado de cambios aplicados.
- se mejoran los ejercicios para que tengan mas contexto
- se ajustan los comentarios para que sean mas claros y descriptivos
= se corrigen typos
- Ahora cada nueva característica se guarda en `features` como un modelo de dominio
- Se eliminan clases relacionadas con el dominio y controladores de ejemplos y hoteles
- Se eliminan pruebas unitarias e integración asociadas
- Limpieza general del código para reducir complejidad innecesaria
- Se agregan los archivos http para las pruebas de los endpoints
@lgzarturo

Copy link
Copy Markdown
Owner Author

Coverage Report

Overall Project 64.55% -0.03%
Files changed 0%

File Coverage
UpdateHotelRequest.kt 100% 🍏
CreateHotelRequest.kt 100% 🍏
ExamplePatchUpdate.kt 100% 🍏
ExampleResponse.kt 100% 🍏
ErrorResponse.kt 100% 🍏
PingResponse.kt 100% 🍏
WebConfig.kt 100% 🍏
OpenApiConfig.kt 100% 🍏
AppConstants.kt 100% 🍏
HotelServiceConfig.kt 100% 🍏
HotelService.kt 100% 🍏
Hotel.kt 100% 🍏
HotelController.kt 100% 🍏
HotelEntity.kt 100% 🍏
UserId.kt 100% 🍏
Email.kt 100% 🍏
ExampleServiceConfig.kt 100% 🍏
PingController.kt 100% 🍏
PingMapper.kt 100% 🍏
PingConfig.kt 100% 🍏
PingService.kt 100% 🍏
UserRole.kt 100% 🍏
ExampleController.kt 98.53% 🍏
PageResponse.kt 98.45% 🍏
GlobalExceptionHandler.kt 96.17% 🍏
HotelResponse.kt 92.39% 🍏
Example.kt 90.48% 🍏
Password.kt 90% 🍏
ExampleRequest.kt 86.15% 🍏
Ping.kt 84.75% 🍏
SortOrder.kt 82.35% 🍏
ExampleServicePort.kt 79.82% 🍏
PageResult.kt 79.12% 🍏
HotelSearchCriteria.kt 74.07% 🍏
HotelRoomJpaRepository.kt 67.9% 🍏
PhoneNumber.kt 65.38% 🍏
RoomEntity.kt 65.22% 🍏
User.kt 55.38% 🍏
Room.kt 54.55% 🍏
PageRequest.kt 28.4% -1.23%
ExampleRepositoryAdapter.kt 2.38% 🍏
SentryController.kt 1.28% 🍏
SentryTestException.kt 0% 🍏
ExampleEntity.kt 0% 🍏
UserMapper.kt 0% 🍏
PasswordEncoder.kt 0% 🍏
CreateUserCommand.kt 0% 🍏
CreateUserService.kt 0% 🍏
UserController.kt 0% 🍏
UpdateUserUseCase.kt 0% 🍏
GetUserUseCase.kt 0% 🍏
DateTimeExtensions.kt 0% 🍏
DuplicateEmailException.kt 0% 🍏
UpdateUserRequest.kt 0% 🍏
UserResponse.kt 0% 🍏

@lgzarturo
lgzarturo merged commit 3a556f3 into main Apr 7, 2026
13 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant