guinther-erich / BecaFilms

Repositório do aplicativo de filmes para avaliação da Beca de Android Developer da NTT DATA EMEAL

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

NTT Beca Films

Repositório do aplicativo de filmes para avaliação da Beca de Android Developer da NTT DATA EMEAL.

Features & build

Aplicativo construído em Kotlin que lista os filmes mais populares da semana de acordo com a API do TheMovieDB.org com arquitetura MVVM. Para isso, foi utilizado:

  • Retrofit (para requisições via HTTP da API);
  • ViewBinding (para acesso as views da lista de filmes e dos detalhes de cada um destes itens);
  • ViewModel (para armazenamento dos dados);
  • Coroutines (para auxiliar nas tarefas assíncronas); e
  • Glide (para utilização de imagens dentro do aplicativo).

Prováveis features

Pensando em dar continuidade ao projeto, seguem as próximas possíveis atualizações:

  • Modo dark do aplicativo;
  • Descrição do elenco do filme;
  • Possibilidade de criação de lista de favoritos;
  • Visualização por outros filtros (melhores pontuações, data de lançamento, etc.);
  • Ajustes na visualização no modo horizontal.

Alterações na arquitetura

MVVM + Clean Architecture

O app NTT Beca Films foi construído sob arquitetura MVVM (Model View ViewModel), o que ajuda a separar com maior precisão a lógica de negócios e apresentação do aplicativo de sua interface do usuário. Isso também facilita a resolução de problemas, manutenção, evolução e até mesmo testes dentro dele.

Após a construção inicial, as suas camadas foram modificadas para que cada um de seus componentes possuíssem suas próprias responsabilidades, com adaptação ao Clean Architecture, o que acarretou em uma série de outros benefícios, tais como:

  • Ganho exponencial na amplitude dos testes;
  • Desacoplação dos componentes, onde a estrutura de pacotes poderá navegar mais rápido entre eles;
  • Rapidez no desenvolvimento de novas features.

As principais alterações estão presentes justamente nas camadas a serem vistas na estruturação do projeto, que são:

  • Camada de Apresentação (ou Presentation Layer): que inclue as Activities e as Views, uma vez que a comunicação entre elas deve ser mais direta e possuem o lado voltado à interação com o cliente;
  • Camada de Domínio (ou Domain Layer): que serve como ponte entre as ViewModels e os Repositories, sendo esta camada a recomendada para inclusão de novas features; e
  • Camada de Dados (ou Data Layer): camada esta onde se encontram os repositórios e os DataSources, ou seja, os responsáveis pela decisão de qual fonte os dados virão.

Android JetPack

O aplicativo pode ser melhor construído utilizando-se as bibliotecas unificadas do Android JetPack, tais como:

  • Activity;
  • Databinding;
  • Hilt (pata injeção de dependências);
  • Lifecycle (para melhor delimitação do ciclo de vida de cada acticity);
  • Entre outras libs que diminuiriam o consumo de memória da aplicação, tendo em vista a sua consistência centralizada em uma só ferramenta, além de permitir um código escrito de forma mais limpa e dentro de práticas recomendadas.

Obstáculos na criação deste app

A implementação de Coroutines e seus desdobramentos para utilização no código foi a principal dificuldade encontrada.

Visualização do NTT Beca Films

NTT_Beca_Films.mp4

About

Repositório do aplicativo de filmes para avaliação da Beca de Android Developer da NTT DATA EMEAL


Languages

Language:Kotlin 100.0%