An open API service indexing awesome lists of open source software.

https://github.com/adrianmdeiros/api-nodejs-arquitetura-hexagonal

Exemplo de projeto com arquitetura hexagonal utilizando Node.js e TypeScript.
https://github.com/adrianmdeiros/api-nodejs-arquitetura-hexagonal

express-js hexagonal-architecture nodejs ports-and-adapters postgresql prisma-orm sqlite typescript zod

Last synced: 3 months ago
JSON representation

Exemplo de projeto com arquitetura hexagonal utilizando Node.js e TypeScript.

Awesome Lists containing this project

README

          

# 🛠️ Arquitetura Hexagonal







---

A __Arquitetura Hexagonal__, também conhecida como *Ports and Adapters*, é uma abordagem de design que visa isolar o núcleo da aplicação das dependências externas, como bancos de dados, interfaces de usuário, serviços externos, entre outros. Isso facilita a manutenção, teste e evolução do software.

## 🏗️ Estrutura

- **Núcleo da Aplicação** 🧩
- Contém a lógica de negócio e as regras da aplicação.
- É totalmente independente de detalhes técnicos externos.
- Inclui as entidades, serviços de domínio e casos de uso.

- **Portas** 🚪
- São as interfaces que definem como o núcleo interage com o mundo externo.
- Podem ser entradas (Input Ports) ou saídas (Output Ports).

- **Adaptadores** 🔌
- Implementam as portas para conectar o núcleo às tecnologias externas.
- Podem ser adaptadores para bancos de dados, APIs REST, interfaces gráficas, etc.
- Garantem que o núcleo permaneça desacoplado das ferramentas externas.

## 🔄 Fluxo de Dados

1. **Entrada** 🎮: Um evento externo aciona uma porta de entrada.
2. **Núcleo** 🧠: A lógica de negócio processa o evento, tomando decisões e realizando operações.
3. **Saída** 📤: Se necessário, o núcleo usa uma porta de saída para interagir com um sistema externo.

## 🎯 Benefícios

- **Desacoplamento** 🔗: A lógica de negócio não depende de frameworks ou tecnologias externas.
- **Testabilidade** 🧪: Fica mais fácil testar o núcleo sem precisar de componentes externos.
- **Facilidade de Mudança** 🔄: Mudanças nos adaptadores não afetam o núcleo da aplicação.


### Diagrama de Contexto
Diagrama de contexto do sistema.

---

### Diagrama de Container
Diagrama de container do sistema.

---

### Diagrama de Componente
Diagrama de componente do sistema.