Estrutura de Pastas para organização do projeto

O projeto segue uma arquitetura com camadas bem definidas para aplicação, domínio, infraestrutura e apresentação. Cada camada tem uma responsabilidade específica:

Example :
/src
 ├── /application
 │    ├── /commands         # Orquestra as operações e lógica de alto nível
 │    ├── /jobs             # Jobs executados com base em eventos
 │    ├── /use-cases        # Casos de uso simples e bem definidos
 │    └── /services         # Lógica de negócios e processamento de jobs e agregações de casos de uso
 │
 ├── /domain
 │    ├── /entities         # Entidades de negócios e lógica principal do domínio
 │    ├── /repositories     # Interfaces de repositórios para acesso a dados
 │    ├── /events           # Eventos de domínio tratados pela aplicação
 │    └── /value-objects    # Objetos de valor imutáveis que representam conceitos de domínio
 │
 ├── /infra
 │    ├── /kafka            # Cliente Kafka e configuração
 │    ├── /persistence      # Implementação de repositórios e acesso ao banco de dados
 │    └── /queue-handlers   # Consumidores de eventos de filas Kafka
 │
 ├── /presentation
 │    ├── /controllers      # Controladores que lidam com requisições e respostas da API
 │    └── /dtos             # Objetos de Transferência de Dados para entrada/saída
 │
 └── /config                # Configurações da aplicação, logging, variáveis de ambiente

Detalhes das Pastas


  • Camada de Aplicação: Responsável por orquestrar comandos, processar jobs e executar serviços e casos de uso da aplicação.
  • Camada de Domínio: Contém as entidades, eventos e objetos de valor, representando a lógica de negócios principal. Entidades encapsulam comportamento e dados mutáveis, enquanto objetos de valor são imutáveis e interfaces de repositórios para acesso a dados.
  • Camada de Infraestrutura: Lida com a interação com banco de dados, mensageira (Kafka, QSQ ...), storage e comunicação externa. Implementa interfaces de repositórios definidas no domínio.
  • Camada de Apresentação: Contém controladores que manipulam APIs externas e eventos que chegam do Kafka.

results matching ""

    No results matching ""