O projeto deve ser analisado antes da implementação
Fornecer aos desenvolvedores uma maneira de organizar o código de forma que encapsule a lógica de negócios, mas mantenha-o separado do mecanismo de entrega
- configuration
- Entities
- Use cases
- Controllers
- routes
- serializes
- Web
- Devices
- DB
- UI
- External interface
- Facilmente testavel
- A interface do usuário pode mudar facilmente
- Regras de negócios não estão vinculadas ao banco de dados.
- As regras de negócios simplesmente não sabem nada sobre o mundo exterior, não estão ligadas a nenhum Framework.
Fonte: https://medium.com/luizalabs/descomplicando-a-clean-architecture-cf4dfc4a1ac6
src → Application sources
└ application → Camada de serviços da aplicação
└ security → Ferramentas de segurança (ex: para gerar e decodificar token de acesso OAuth)
└ use-cases → Regras de negócios da aplicação
└ utils → Ferramentas úteis para o escopo da lógica de negócio
└ infrastructure → Frameworks, drivers, ferramentas como Database e etc.
└ config → Serviços de configuração da aplicação
└ orm → Middleware de ORMs de banco de dados
└ typeorm.ts → Cliente e esquemas do typeorm
└ repositories → Implementação de interfaces de repositório de domínio
└ security → Implementações de ferramentas de segurança (ex: JwtAccessTokenManager)
└ webserver → Configuração do servidor Web (servidor, rotas, plugins, etc.)
└ server.ts → Definição do servidor
└ interfaces → Interliga o externo do interno
└ controllers → Manipuladores de rotas
└ routes.ts → Definições de rota
└ serializers → Conversão ou reestrutura de objetos
└ utils → Ferramentas úteis para o escopo de interface