Skip to content

Movie App foi desenvolvido na intenção de praticar uma abordagem moderna para desenvolvimento de aplicativos Android.

Notifications You must be signed in to change notification settings

olucasmoro/movie-app

Repository files navigation

App Movie (Em construção...)

Kotlin Version

Movie App foi desenvolvido na intenção de praticar uma abordagem moderna para desenvolvimento de aplicativos Android.

O objetivo deste projeto é combinar bibliotecas populares do ambiente Android e demonstrar as melhores práticas de desenvolvimento baseadas nos estudos de SOLID, Android Architecture components, App Modulaziration e Clean Architecture.

Movie App é um aplicativo simples mas que busca ser modular, escalável, sustentável e testável. Este projeto está apenas em seu inicio, onde frequentemente receberá novas features, atualizações, refatoração, entre outras melhorias.

ScreenshotScreenshotScreenshotScreenshotScreenshot

Funcionalidades

  • Login de usuário
  • Cadastro de usuário
  • Listagem de filmes por categoria
  • Busca por filme
  • Adicionar filme na Minha Lista
  • Alterar informações do usuário
  • Marcar filme como favorito
  • Criar listas diversas de filmes
  • Outras...

Características do projeto

Arquitetura

  • app - Configuração de aplicativo fundamental
  • library_x específicos da aplicação dos quais alguns dos recursos podem depender. Isso é útil se você deseja compartilhar alguns ativos ou código apenas entre alguns módulos de recursos (atualmente, o aplicativo não tem esses módulos)

Estrutura

Clean architecture é a" arquitetura central "do aplicativo, então cada módulo de recursos contém o próprio conjunto de camadas da arquitetura limpa:

Presentation

Essa camada é a mais próxima do que o usuário vê na tela. A camada presentation é uma mistura de MVVM (Jetpack ViewModel usado para preservar os dados durante o reinício da atividade).

Componentes:

  • View (Fragment) - apresenta os dados na tela e passa as interações do usuário para o View Model. As visualizações são difíceis de testar, portanto, devem ser o mais simples possível.
  • ViewModel - despacha (por meio de LiveData) mudanças de estado para a visualização e lida com as interações do usuário.

Domain

Esta é a camada central do aplicativo. Observe que a camada domain é independente de quaisquer outras camadas. Isso permite fazer modelos de domínio e lógica de negócios independentes de outras camadas. Em outras palavras, as mudanças em outras camadas não terão efeito na camada domain, por exemplo. alterar o banco de dados (camada de data) ou a interface de usuário da tela (camada de apresentação) não resultará em qualquer alteração de código dentro da camada de domain.

Componentes:

  • UseCase - contém lógica de negócios
  • DomainModel - desafia a estrutura central dos dados que serão usados no aplicativo. Esta é a fonte para os dados do aplicativo.
  • Interface do repositório - necessária para manter a camada domain independente da camada de data ([Inversão de dependência]

Data

Gerencia os dados do aplicativo e expõe essas fontes de dados como repositórios para a camada domain. As responsabilidades típicas dessa camada seriam recuperar dados da Internet e, opcionalmente, armazenar em cache esses dados localmente.

Componentes:

  • Repositório está expondo dados para a camada domain. Dependendo da estrutura do aplicativo e da qualidade, o repositório de APIs externo também pode mesclar, filtrar e transformar os dados. A intenção dessas operações são para criar uma fonte de dados de alta qualidade para a camada domain, não para realizar qualquer lógica de negócios (responsabilidade do use case da camada domain).

Clean Architecture

Para rodar o projeto no seu Android Studio

  • Crie um projeto com banco de dados no Firebase. Baixe o arquivo google-services.json deste projeto e adicione ele na pasta movie-app/app/
  • Insira sua chave da API do The Movie DB no arquivo movie-app/java/olucasmoro.movieapp/app/service/utils/Constants.kt

License

MIT License

Copyright (c) 2021 Lucas Moro

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and 
associated documentation files (the "Software"), to deal in the Software without restriction, including 
without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 
copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to 
the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial 
portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT 
LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN 
NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 
WHETHER IN AN ACTION OF  TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

About

Movie App foi desenvolvido na intenção de praticar uma abordagem moderna para desenvolvimento de aplicativos Android.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages