Skip to content

Latest commit

 

History

History
53 lines (43 loc) · 3.1 KB

README.md

File metadata and controls

53 lines (43 loc) · 3.1 KB

Movie App

🎥 Aplicativo integrado à API do site The Movie DB para acesso ao seu acervo de filmes. 🎥
Desenvolvido para fins de estudo e portfólio.

movie

💻 Tecnologias

O projeto foi desenvolvido com Flutter, e inclui packages como dio, lottie, shared_preferences, flutter_mobx, get_it, cached_network_image e mockito para testes.

💪 Motivação

A ideia de desenvolver um aplicativo baseado na API do site The Movies DB surgiu quando acompanhava os estudos de arquitetura Flutter no canal do YouTube do Deivid Willyan, com a playlist Curso Arquitetura no Flutter - 2022. No curso foi iniciado uma integração simples, que mostrava uma lista de filmes vindo da API e recuperava informações desses filmes. Posteriormente ampliei o projeto para contemplar mais funcionalidades e integrações. As funcionalidades por mim implementadas foram:

  • Login com e-mail e senha (criar e armazenar sessão).
  • Logout (deletar sessão).
  • Favoritar filmes em uma conta logada.
  • Navegar entre 10 listas de filmes fornecidas pela API.

Veja o vídeo exemplo a seguir: video from YouTube

📐 Arquitetura

Em sua arquitetura, foi implementado o Clean Dart proposto pela Flutterando como implementação da Clean Architecture no Flutter. Esse modelo pode ser dividido do seguinte modo:

  • Presentation (UI, Flutter, Controllers, State Manager, etc).
  • Domain (apenas regras de negócios).
    • Entities: regras de negócio da empresa.
    • Usecases: regras de negócio da aplicação.
    • Interfaces/contratos de Repositories.
  • Data
    • Implementação de Repositories.
    • Tratamento dos dados externos.
    • Interfaces/contratos de DataSources.
  • External
    • Implementação de DataSources.
    • Acessos externos que dependem de packages, drivers, APIs, etc.

Além disso, o Clean Architecture propõe o conjunto de princípios conhecido como SOLID.

🎬 Gestão de Estado

Para gestão de estado foi adotado o Mobx do package flutter_mobx. A escolha se deu devido à sua simplicidade e agilidade na implementação, além da sua crescente popularidade na comunidade Flutter.

💉 Injeção de Dependências

A injeção de dependências foi implementada com o package get_it. Escolhido por ser um package simples que atende bem as demandas do aplicativo, contribuindo na implementação do princípio SOLID da inversão de dependências.