Solução foi implementada utilizando uma abordagem mais reativa, para isso a arquitetura escolhida foi MVVM com Clean Architecture o que proporciona maior testabilidade do app.
Bibliotecas utilizadas
Retrofit - Utilizando uma classe própria como wraper ao invés do Response.
Moshi - Para conversão de Json para objetos
Kotlin Coroutines - Maneira mais facil e rápida para programação assincrona, retirando processamento de dados do Thread da UI
Kotlin Koin - Biblioteca simples e eficaz para injeção de dependencias para solução desse porte.
Glide - Carregador de imagens escolhido pelo desenpenho em redimensionar imagens.
LifeCycle - Para controle de ciclo de vida do viewModel
Navigation - Utilizado por proporcionar uma experiencia de fluxo de telas melhor para o usuario, principalmente as transições.