Sistema legado de gestão de projetos de extensão com código acoplado, sem testes e deploy manual. O objetivo foi refatorar sem reescrever do zero (strangler fig): isolar domínios, aplicar SOLID e Clean Architecture e criar suíte de testes para habilitar evolução contínua.
Mapeei fluxos críticos (cadastro de propostas, avaliação, certificação), quebrei god classes, introduzi casos de uso, repositórios e injeção de dependência. Pipeline CI passou a rodar lint, testes e build de imagem Docker a cada PR.
Galeria — Antes e Depois
Diagramas de arquitetura e métricas de qualidade.
Figura 1 — Antes: monolito acoplado.Figura 2 — Depois: camadas domain/application/infra.Figura 3 — Cobertura de testes de 18% → 74%.
Estratégia de Refatoração
1) Caracterização com testes de caracterização, 2) Extração de casos de uso, 3) Inversão de dependência para repositórios, 4) Introdução de DTOs e validação, 5) Containerização e pipeline. Métricas: complexidade ciclomática -42% e tempo de deploy de 45min para 6min.
Tecnologias
TypeScript/Node ou Python, Docker, GitHub Actions, Vitest/Jest, Prisma/TypeORM, ESLint. Documentação de ADRs.
Aprendizados
Refatorar com testes de rede de segurança permite evoluir sem medo. Próximo: observabilidade com logs estruturados e métricas. Base sólida para disciplina de Arquitetura de Software.