← voltar

My House - Scoring API para priorização de famílias em habitação social com Arquitetura Hexagonal (Ports & Adapters)

"What goes inside the hexagon? I don't care." - Cockburn

Diagrama de fluxo da arquitetura Ports and Adapters

My House é uma Scoring API para priorização de famílias em um programa de habitação social: a API recebe um conjunto de famílias (renda total e dependentes), calcula uma pontuação para cada uma segundo regras de negócio e retorna as famílias elegíveis ordenadas por score. O foco do projeto não é o CRUD em si, mas usar um domínio pequeno e com regras reais para exercitar a Arquitetura Hexagonal (Ports & Adapters) de ponta a ponta, mantendo o núcleo de negócio 100% independente do Spring.

A ideia central da Arquitetura Hexagonal é a regra de dependência: tudo aponta para dentro. O domínio não sabe que existe Spring, HTTP ou banco: quem conhece o domínio são as bordas. A comunicação com o mundo externo acontece por portas (interfaces definidas pelo domínio) que os adapters da infraestrutura implementam. Um POST /families entra por um adapter HTTP, atravessa um caso de uso e chega ao núcleo; a persistência é acessada de volta por uma porta, nunca por uma dependência direta. Na prática: trocar in-memory por Postgres, ou REST por mensageria, é mexer só na borda, e o núcleo fica intacto.

Design & Decisões de Arquitetura

As regras em si (faixas de renda, bônus por dependentes) são só o miolo do hexágono, propositalmente simples e trocáveis via Strategy. O que importa aqui é que elas vivem no domínio, sem nenhum acoplamento com Spring, HTTP ou persistência.

API REST

Qualidade & Testes

Stack