# Arquitectura del Sistema - ROI Theme ## Diagrama de Capas ``` ┌─────────────────────────────────────────────────────────┐ │ FRAMEWORKS & DRIVERS │ │ (WordPress, MySQL) │ └─────────────────────────────────────────────────────────┘ ▲ │ ┌─────────────────────────────────────────────────────────┐ │ INFRASTRUCTURE LAYER │ │ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │ │ │ Repositories │ │ Controllers │ │ Services │ │ │ │ (WordPress) │ │ (AJAX) │ │ (Validation) │ │ │ └──────────────┘ └──────────────┘ └──────────────┘ │ └─────────────────────────────────────────────────────────┘ ▲ │ ┌─────────────────────────────────────────────────────────┐ │ APPLICATION LAYER │ │ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │ │ │ Use Cases │ │ DTOs │ │ Interfaces │ │ │ │ (SaveComp) │ │ (Request) │ │ (Contracts) │ │ │ └──────────────┘ └──────────────┘ └──────────────┘ │ └─────────────────────────────────────────────────────────┘ ▲ │ ┌─────────────────────────────────────────────────────────┐ │ DOMAIN LAYER │ │ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │ │ │ Entities │ │Value Objects │ │ Interfaces │ │ │ │ (Component) │ │(CompName) │ │ (Repository) │ │ │ └──────────────┘ └──────────────┘ └──────────────┘ │ └─────────────────────────────────────────────────────────┘ ``` ## Reglas de Dependencia La **Regla de Dependencia** dice: > Las dependencias de código fuente deben apuntar **hacia adentro**, hacia políticas de más alto nivel. - **Dominio** no depende de nadie - **Aplicación** depende solo de Dominio - **Infraestructura** depende de Aplicación y Dominio - **Frameworks** son un detalle de Infraestructura ## Capas Explicadas ### 1. Domain Layer (Capa de Dominio) **Responsabilidad**: Lógica de negocio pura **Contiene**: - Entidades (Component) - Value Objects (ComponentName, ComponentConfiguration) - Interfaces de repositorios - Excepciones de dominio **NO contiene**: - Código de WordPress - Acceso a base de datos - Código de UI ### 2. Application Layer (Capa de Aplicación) **Responsabilidad**: Casos de uso y orquestación **Contiene**: - Use Cases (SaveComponent, GetComponent) - DTOs (Request/Response objects) - Interfaces de servicios **NO contiene**: - Lógica de negocio (eso va en Dominio) - Detalles de implementación (eso va en Infraestructura) ### 3. Infrastructure Layer (Capa de Infraestructura) **Responsabilidad**: Implementación de detalles técnicos **Contiene**: - Repositorios que usan WordPress/MySQL - Controllers (AJAX, REST) - Servicios (Validation, Cache) - Adaptadores de frameworks **Depende de**: - Application Layer (usa Use Cases) - Domain Layer (implementa interfaces) - WordPress ## Ventajas de esta Arquitectura 1. **Testeable**: Fácil de testear sin WordPress 2. **Mantenible**: Separación clara de responsabilidades 3. **Escalable**: Fácil agregar nuevos features 4. **Independiente**: El dominio no depende de frameworks 5. **Flexible**: Fácil cambiar implementaciones