HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux ip-172-31-4-197 6.8.0-1036-aws #38~22.04.1-Ubuntu SMP Fri Aug 22 15:44:33 UTC 2025 x86_64
User: ubuntu (1000)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: //var/www/api-storage/README.md
# đź§± Arquitectura de Proyecto - Clean Architecture con NestJS

Este proyecto sigue los principios de **Clean Architecture**, separando responsabilidades en distintas capas para promover un cĂłdigo desacoplado, mantenible y escalable.

---

## đź—‚ Estructura de Carpetas

src/
├── core/                    # Capa de dominio (entidades, interfaces)
│   ├── entities/            # Entidades de negocio
│   └── interfaces/          # Contracts/Ports (SOLID)
├── infrastructure/          # Infraestructura externa
│   ├── minio/               # Configuración de MinIO
│   └── repositories/        # Implementación de repositorios
├── application/             # Casos de uso
│   └── use-cases/           # Lógica de negocio
├── api/                     # Capa de presentación
│   ├── controllers/         # Controladores REST
│   ├── dtos/                # Objetos de transferencia
│   └── exceptions/          # Filtros de excepciones
└── main.ts                  # Punto de entrada


---

## 🔍 Descripción por Capas

### `core/` - Capa de Dominio
Responsable de definir la lĂłgica de negocio, sin depender de frameworks ni tecnologĂ­as externas.

- **`entities/`**  
  Contiene las entidades de negocio con sus propiedades y comportamientos.

- **`interfaces/`**  
  Define contratos (puertos) que serán implementados por la infraestructura. Ejemplo: interfaces de repositorios.

- **`use-cases/`**  
  Define los casos de uso del negocio (la lĂłgica pura), orquestando entidades e interfaces.

### `infrastructure/` - Capa de Infraestructura
Encargada de implementar las interfaces definidas en `core/`, adaptando el mundo externo al dominio.

- **`config/`**  
  Configuraciones como variables de entorno, inicializaciĂłn de mĂłdulos, etc.

- **`minio/`**  
  Cliente y configuraciones para la interacciĂłn con MinIO.

- **`repositories/`**  
  Implementaciones concretas de interfaces de repositorio. AquĂ­ se conecta con bases de datos, APIs externas, etc.

### `application/` - Capa de AplicaciĂłn
Responsable de manejar la lĂłgica de entrada/salida del sistema, coordinando las peticiones hacia los casos de uso.

- **`controllers/`**  
  Controladores de NestJS que reciben las peticiones HTTP y llaman a los casos de uso del dominio.

### `shared/` - CĂłdigo ComĂşn
Contiene utilidades, constantes, excepciones personalizadas y cualquier otro recurso que pueda ser compartido entre capas.

---

## 🧪 Principios de Diseño Aplicados

- **SeparaciĂłn de Responsabilidades:** Cada capa tiene una Ăşnica responsabilidad.
- **InversiĂłn de Dependencias:** El dominio no depende de ninguna tecnologĂ­a o infraestructura.
- **Desacoplamiento:** Cada componente puede ser probado e intercambiado de forma independiente.
- **Testabilidad:** Las capas del dominio pueden probarse sin necesidad de un entorno real.

---

## 🚀 Comenzar

1. Clona el repositorio:
   ```bash
   git clone https://github.com/usuario/proyecto.git
   cd proyecto