AN
Todos os projetos
Estudos2025/01

CRUD com Arquitetura Limpa

Inversão de dependência aplicada em um CRUD real

Next.jsTypeScriptFirebaseTailwind CSS
Interface do CRUD de clientes

O desafio

Um CRUD é o exercício mais banal do desenvolvimento — e justamente por isso é um bom laboratório para testar arquitetura. Se a estrutura não se justifica num problema simples, ela provavelmente é complexidade desnecessária.

O objetivo aqui não era cadastrar clientes: era aplicar inversão de dependência num projeto pequeno o suficiente para entender por inteiro.

O que eu fiz

01

Camada de domínio isolada

A entidade Cliente e a interface ClienteRepositorio não conhecem o Firebase. Elas definem o contrato; a infraestrutura se adapta a ele.

02

Implementação intercambiável

ColecaoCliente implementa o contrato usando Firestore. Trocar por PostgreSQL exigiria escrever outra implementação — sem tocar em uma linha de regra de negócio.

03

Lógica de tela em hook

Toda a orquestração (selecionar, salvar, excluir, alternar entre tabela e formulário) vive em useClientes. Os componentes só renderizam.

Galeria

Listagem de clientes
Formulário de cadastro
Diagrama das camadas

Decisões técnicas

O "D" do SOLID na prática

Inversão de dependência costuma ser explicada com exemplos abstratos. Aqui dá para ver o fluxo real: pages → hooks → core (interface) ← backend (implementação). A seta que aponta para trás é o ponto todo.

Entidade rica, não anêmica

Cliente.ts encapsula dados e comportamentos, incluindo a criação de um cliente vazio. É modelagem de domínio, não um type solto.

É o projeto que melhor demonstra como eu penso arquitetura: a estrutura serve para tornar a mudança barata, não para exibir padrões.