https://github.com/alvarobcprado/animes_app
App Flutter para estudo de modularização em packages
https://github.com/alvarobcprado/animes_app
dart flutter flutter-hive flutter-provider flutter-triple gorouter
Last synced: 4 months ago
JSON representation
App Flutter para estudo de modularização em packages
- Host: GitHub
- URL: https://github.com/alvarobcprado/animes_app
- Owner: alvarobcprado
- License: mit
- Created: 2022-09-13T00:56:11.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2023-05-18T02:08:42.000Z (almost 3 years ago)
- Last Synced: 2024-04-17T23:02:48.957Z (about 2 years ago)
- Topics: dart, flutter, flutter-hive, flutter-provider, flutter-triple, gorouter
- Language: Dart
- Homepage:
- Size: 3.97 MB
- Stars: 4
- Watchers: 1
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Animes
Aplicativo Flutter
## Principais dependências
- Navegação: [GoRouter](https://pub.dev/packages/go_router)
- Injeção de dependência: [Provider](https://pub.dev/packages/provider)
- Chamadas de rede: [Dio](https://pub.dev/packages/dio)
- Persistência de dados: [Hive](https://pub.dev/packages/hive)
- Gerenciamento de estado: [Flutter Triple](https://pub.dev/packages/flutter_triple)
## 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](https://www.widgetbook.io/), facilitando testar visualmente os componentes do Design System isoladamente
- Contém a classe [Result](https://github.com/alvarobcprado/animes_app/blob/main/modules/core/lib/src/commons/result.dart), 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](https://pub.dev/packages/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](https://github.com/alvarobcprado/animes_app/blob/main/modules/navigation/lib/src/auth_boundary.dart) é 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](https://github.com/alvarobcprado/animes_app/blob/main/modules/feature_home/lib/src/boundary/auth_boundary_impl.dart) 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
#