Skip to content

App Flutter para estudo de modularização em packages

License

Notifications You must be signed in to change notification settings

alvarobcprado/animes_app

Repository files navigation

Animes

Aplicativo Flutter

Principais dependências

Sobre

  • O aplicativo possui modularização
  • Possui internacionalização de strings, onde cada feature é responsável pelas suas strings utilizadas, além do módulo core possuir strings compartilhadas no projeto
  • É destinado um módulo para o design system do aplicativo
  • O aplicativo possui a implementação do Widgetbook, facilitando testar visualmente os componentes do Design System isoladamente
  • Contém a classe Result, que tem como objetivo empacotar os dados retornados deixando com que cada camada lide responsavelmente com as possíveis falhas
  • Possui testes unitários, utilizando Mocktail

Arquitetura

O aplicativo segue o padrão MVVM + Clean Architecture contendo os seguintes módulos:

  • App: Responsável pela inicialização do aplicativo
  • Core: Módulo que contém código compartilhado e todas as dependências utilizadas no projeto
  • Data Local: Módulo responsável por salvar e obter as informações salvas localmente
  • Dependency Injection: Responsável pela injeção de dependência do aplicativo. Este módulo conhece todos os outros
  • Design System: Módulo independente que contém as cores, tipografias e os componentes reutilizáveis de UI
  • Feature Auth: Módulo responsável pela tela de login
  • Feature Home: Módulo responsável pelas telas de listagem de animes, detalhes de um anime clicado e animes favoritados
  • Navigation: Responsável pela navegação entre as features (qualquer módulo feature tem acesso a este módulo). Cada feature pode possuir uma interface de navegação, como por exemplo: a AuthBoundary é uma interface que contém um método para navegação da Feature Auth para Feature Home. Sendo assim, cada feature é responsável pela implementação da navegação de outra feature para a sua própria feature (neste caso temos a AuthBoundaryImpl contida na Feature Home)

Telas

  • Login
  • Listagem de animes: Tela que exibe por paginação uma lista de animes (aleatórios, por busca ou por categoria)
  • Detalhes de um anime: Apresenta os detalhes de um anime clicado na tela anterior. Nesta tela é possível favoritar/desfavoritar um anime
  • Animes favoritados: Tela que exibe os animes favoritados do usuário