DEV Community

Jhones Gonçalves
Jhones Gonçalves

Posted on

Clean Architecture no NestJS đŸ›ïžđŸš€

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:

  1. Entities (Entidades): Representam os objetos de negĂłcio do sistema.
  2. Use Cases (Casos de Uso): Implementam as regras de negĂłcio do sistema.
  3. Interfaces: SĂŁo interfaces que definem como os Use Cases interagem com o mundo externo.
  4. 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

Enter fullscreen mode Exit fullscreen mode

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)

Collapse
 
flavioever profile image
Flavio Ever

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.

Collapse
 
antonioscript profile image
AntĂŽnio Rocha

Muito bom, irei implementar essa lĂłgica em meus projetos daqui pra frente