Node web server running over Express for a Rest API
Clean architecture es un conjunto de principios cuya finalidad principal es ocultar los detalles de implementación a la lógica de dominio de la aplicación.
De esta manera mantenemos aislada la lógica de negocios, consiguiendo tener un código mucho más mantenible y escalable en el tiempo.
La finalidad de clean architecture es que la aplicación sea más sencilla de mantener y escalar en el tiempo, además que la logica de negocio no se vea afectada por detalles, implementaciones o elementos externos.
La arquitectura clean se basa en los tres siguientes pilares:
-
Domain Driven Design: los detalles de implementación de la lógica de dominio deben estar separados de implementaciónes, detalles o adaptadores de cualquier tipo, como infraestructura, frameworks, UI entre otros.
-
Modular Architecture: se basa en que los módulos de la aplicación sean independientes y que sean capaces de ser reutilizados, dichos modulos pueden ser utilidades compartidas, Guards, Adaptadores, Factories.
-
Test Driven Development: Este pilar se basa en que los tests de la aplicación sean capaces de probar la lógica de dominio de la aplicación.
-
Clean Code: Clean Code
-
Patrones SOLID: Single Responsibility, Open/Closed, Liskov Substitution, Interface Segregation, Dependency Inversion
-
Dependecy Inversion: Dependency Injection
-
Design Patterns: Design Patterns - best approach
-
Repository Pattern: Implementing a generic repository Pattern
npm i && npm run prepare
Las carpetas principales propuestas para el proyecto son:
- shared: carpeta donde se encuentran todos modulos reutilizables que sean utilidades compartidas.
- modules: carpeta donde se encuentran todos los modulos de la aplicación, incluyendo, casos de uso, adaptadores y dominio.
shared/
- adapters/
- application/
- domain/
- common/
- core/
- utils/
- constants/
modules/
- module_name (ej: users)
- adapters/
- application/
- infrastructure_application (ej: http - queue - daemon - jobs)
- usecases/
- domain/
- NestJS
- TypeScript
- Axios
- Express
- Winston Logger
- Prettier
- ESLint
- Airbnb Code style Guide
- SonarQube Pluggins (VS Code)
- Jest
- Husky
- La base de Clean Architecture
- Flujo y detalle de Clean Architecture
- Puertos y Adaptadores
- Porque Clean Architecture
- Clean Architecture en Frontend
- Full Clean Architecture Explained
- Ocupar SemVer para el versionado semantico.
-
feature-*
-
release ----> Protegida
-
hotfix-*
-
develop ----> Protegida
-
main ----> Protegida
Feature-login-re-v1-1
No se permiten mayúsculas
No se permiten guiones bajos
No se permiten espacios
No se permiten caracteres especiales ($#&%?¿)
(((feature|release|hotfix){1}-{1})\/*([a-z|0-9|-]*)$)|develop|release|main
/^main-v\d+\.\d+\.\d+$
Si necesitas mas información la puedes encontrar en: