Skip to content

App for portfolio purpose, connecting to "The Movie DB" APIs.

Notifications You must be signed in to change notification settings

JoaoPaulo-Macedo/movie_app

Repository files navigation

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.

About

App for portfolio purpose, connecting to "The Movie DB" APIs.

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages