Este é um simples projeto Android utilizando a Arquitetura MVVM Clean Arch.
- Koin para injeção de dependência.
- Coroutines + Flow para controle assíncrono do aplicativo.
- Multi-módulos para melhor separação da responsabilidades.
- O arquivo TOML para gerenciar as bibliotecas.
Eu dividi em três módulos sem contar o módulo :app, segundos os padrões do Clean Code com as camadas:
- Presentation: :feature:catalog
- Domain: :domain:tvmaze
- Data: :data:tvmaze
O fato de eu ter feito multi-módulos deixou bem mais visível a responsabilidade de cada módulo, assim melhorando a leitura e entendimento do código.
Outro ponto foi eu ter utilizado o Navigation e o Safe Args para passar os dados eu um Fragment para outro deixando a navegação bem mais simples.
Criar o módulo features (Presentation Layer) vai nos permitir builds mais rápidas, poís caso isso seja implementado somente no módulo :app, com o tempo e a adição de novas features acarretará na demora de compilação por estar tudo em um lugar só.
A imagem foi gerada pelo task projectDependencyGraph
, use o site Graphviz, para entender como criar o grafo.
O Aplicativo é bem simples, ele basicamente lista as Séries que vem da API TvMaze fornece através da API.
O seu uso é bem simples:
Problemas existem e muitos deles pretendo resolver:
- SearchView continua aberto após ir para a tela de detalhes do Show.
- Manter o estado da tela após o retorno da tela de detalhe.
- Remover o ícone de busca na tela de detalhe.
- Melhorar o Handle de Erro