Open LuchoBazz opened 7 months ago
/src
│
├── /app
│ ├── app.ts # Configuración y arranque de la aplicación
│ ├── routes.ts # Definición de rutas (se conecta con los controladores)
│ └── server.ts # Configuración del servidor Express
│
├── /core # Dominio principal (lógica de negocio)
│ ├── /entities # Entidades del dominio
│ │ └── user.entity.ts # Entidad de ejemplo (User)
│ ├── /services # Servicios que contienen la lógica de negocio
│ │ └── user.service.ts # Servicio de ejemplo (UserService)
│ ├── /repositories # Interfaces de persistencia (puertos)
│ │ └── user.repository.ts
│ └── /use_cases # Casos de uso (lógica de aplicación)
│ └── create_user.use_case.ts # Caso de uso de ejemplo (Crear Usuario)
│
├── /adapters # Adaptadores (implementaciones de puertos)
│ ├── /api # Adaptadores de API (controladores para la entrada/salida HTTP)
│ │ ├── user.controller.ts # Controlador para manejar requests relacionadas con usuarios
│ │ └── error.handler.ts # Manejo de errores global
│ ├── /persistence # Adaptadores de persistencia (implementación de interfaces de repositorios)
│ │ └── user.prisma.ts # Implementación del repositorio usando Prisma
│ └── /mappers # Mapeadores de datos (si es necesario para traducir entre capas)
│ └── user.mapper.ts # Mapeador de User entre capas de datos y dominio
│
├── /infrastructure # Configuración de infraestructura y dependencias
│ ├── /database # Configuración de la base de datos
│ │ └── prisma.ts # Conexión a la base de datos usando Prisma
│ ├── /http # Configuración de Express y middlewares
│ │ └── express.ts # Configuración de middlewares de Express
│ ├── /logger # Logger (como Winston o similar)
│ │ └── logger.ts # Configuración del logger
│ └── /env # Configuración de variables de entorno
│ └── config.ts # Archivo de configuración de entorno
│
└── /tests # Pruebas unitarias e integración
├── /unit # Pruebas unitarias para los servicios del dominio
├── /integration # Pruebas de integración para las APIs y bases de datos
└── /mocks # Mock de dependencias para las pruebas
Explicación de la estructura: /app: Esta carpeta contiene el arranque de la aplicación y las rutas de Express.
/core: La capa del dominio o "núcleo", que contiene:
Entidades (/entities): Las entidades que representan los objetos de negocio. Servicios (/services): Aquí es donde va la lógica de negocio. Repositorios (/repositories): Interfaces que definen cómo interactuar con la persistencia de datos. /adapters: Aquí están los adaptadores que conectan el dominio con el mundo exterior:
API (/api): Los controladores de Express que manejan las peticiones HTTP. Persistencia (/persistence): Implementaciones concretas de los repositorios (por ejemplo, Prisma, Sequelize). Mapeadores (/mappers): Mapeadores opcionales para convertir datos entre diferentes capas. /infrastructure: Contiene configuraciones de infraestructura, como la base de datos, los logger, y cualquier configuración relacionada con la infraestructura de la aplicación.
/tests: Contiene las pruebas unitarias e integradas. Se pueden dividir en carpetas como unit (pruebas de la lógica del dominio) e integration (pruebas de la API, bases de datos, etc.).
├── /shared
│ ├── /utils
│ └── /constants
Tasks
Tests
Future
...
Tests
Deprecated