Este aplicativo está separado em dois módulos:
Modulo App -> Utilizado para abrigar o aplicativo no que diz respeito ao Android e Apresentação de Views, essa camada conhece as demais camadas, no entanto não é conhecida por ninguém.
Modulo Data -> Módulo utilizado para abrigar repositórios, datasource e model, este módulo é conhecido pelo app no entanto não conhece o módulo app.
Design Pattern -> MVI Escolhi este design pattern estrutural devido a sua facilidade de legibilidade além de também facilitar os testes unitários
Retrofit, OkHttp, Gson -> Escolhido para manipulação de rede
Dagger Hilt -> Escolhido para injeção de dependências
Mockk -> Escolhido para Testes Unitários
Kotlin Flow -> Escolhido para chamadas assincronas
Glide -> Escolhido para lidar com carregamento de imagens
SkyDovesAndroidVeil -> Escolhido para animação de shimmer
Jacoco -> Utilizado para gerar relatórios de cobertura de testes