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! 💪😊
Discover more from Coursity
Subscribe to get the latest posts sent to your email.