Introdução đ
A arquitetura limpa (Clean Architecture) Ă© um padrĂŁo de arquitetura de software que visa criar sistemas altamente testĂĄveis, escalĂĄveis e independentes de frameworks. Neste artigo, vamos explorar como aplicar os princĂpios da Clean Architecture em um projeto usando o framework NestJS.
O que Ă© Clean Architecture? đ€đ
A Clean Architecture, proposta por "Robert C. Martin"
, enfatiza a separação de preocupaçÔes e a independĂȘncia de frameworks. Ela consiste em vĂĄrias camadas concĂȘntricas, cada uma com uma responsabilidade especĂfica. As camadas principais sĂŁo:
- Entities (Entidades): Representam os objetos de negĂłcio do sistema.
- Use Cases (Casos de Uso): Implementam as regras de negĂłcio do sistema.
- Interfaces: SĂŁo interfaces que definem como os Use Cases interagem com o mundo externo.
- Frameworks e Drivers: SĂŁo as camadas externas que interagem com o sistema, como frameworks web, bancos de dados, etc.
Implementação no NestJS đ ïžđŠ
Vamos implementar a Clean Architecture em um projeto NestJS dividindo-o em mĂłdulos e seguindo uma estrutura de pastas que reflete as camadas da arquitetura.
Estrutura de Pastas đđ
src/
âââ modules/
â âââ users/
â â âââ domain/
â â â âââ entities/
â â â â âââ user.entity.ts
â â â âââ repositories/
â â â â âââ user.repository.ts
â â â âââ services/
â â â âââ user.service.ts
â â âââ application/
â â â âââ dto/
â â â â âââ create-user.dto.ts
â â â âââ interfaces/
â â â â âââ user.interface.ts
â â â âââ use-cases/
â â â âââ create-user.use-case.ts
â â âââ infrastructure/
â â â âââ persistence/
â â â âââ user.persistence.module.ts
â â âââ presentation/
â â âââ controllers/
â â â âââ user.controller.ts
â â âââ dtos/
â â â âââ user.dto.ts
â â âââ view-models/
â â âââ user.view-model.ts
Descrição das Pastas đđ
- Domain: Aqui moram as entidades, repositórios e serviços relacionados ao coração do módulo.
- Application: Este é o cérebro do nosso módulo, onde os casos de uso, interfaces e DTOs fazem a mågica acontecer.
- Infrastructure: Este Ă© o alicerce do nosso projeto, onde implementamos os detalhes de infraestrutura, como mĂłdulos de persistĂȘncia.
- Presentation: Aqui é a hora do show! Contém os controladores, DTOs e view models que dão vida à nossa aplicação.
ConclusĂŁo đđ
A Clean Architecture no NestJS oferece uma maneira estruturada e modular de desenvolver aplicativos, promovendo a testabilidade, a escalabilidade e a manutenibilidade do cĂłdigo. Ao seguir os princĂpios da Clean Architecture, vocĂȘ pode construir sistemas mais robustos e independentes de frameworks.
Neste artigo, exploramos como organizar um projeto NestJS usando a Clean Architecture e uma estrutura de pastas que reflete as camadas da arquitetura. Espero que isso ajude vocĂȘ a criar aplicativos mais eficientes e fĂĄceis de manter. Vamos construir coisas incrĂveis juntos! đȘđ
Top comments (2)
Cara eu ja vi trocentos clean archs da vida mas o seu eu achei deveras peculiar porque voce simplesmente colocou parte do que Ă© o clean code amarrado a estrutura do nest o que em tese fere alguns principios.
Muito bom, irei implementar essa lĂłgica em meus projetos daqui pra frente