Django Clean Architecture (Rescue)
Objetivo
Estruturar backend Python/Django modular, orientado a domínio e fácil manutenção.
Estrutura recomendada por contexto
domain/: entidades, value objects, regras de negócio puras.application/: casos de uso (commands/queries), portas e DTOs.infrastructure/: ORM, repositórios concretos, integrações externas.interfaces/: views/serializers/controllers REST.
Regras de arquitetura
- Dependência sempre aponta para dentro (domain não conhece Django).
- Use interfaces (ports) para abstrair persistência e integrações.
- Serviços de aplicação orquestram casos de uso, não regras de domínio.
- Repositórios fazem tradução entre ORM e objetos de domínio.
Workflow
- Definir bounded context (
rescue,alerts,volunteers). - Modelar agregados e invariantes no domínio.
- Criar casos de uso explícitos (create/update/dispatch/close).
- Implementar adapters Django/ORM sem vazar regra de negócio.
- Escrever testes por camada (unit domain + integration api).
Padrões sugeridos
- Repository Pattern
- Service Layer / Use Case Interactor
- Factory para criação de entidades com validação
- Domain Events para auditoria operacional
Source: nhmatsumoto/sos_location — distributed by TomeVault.