Aplicativo Flutter
- Navegação: GoRouter
- Injeção de dependência: Provider
- Chamadas de rede: Dio
- Persistência de dados: Hive
- Gerenciamento de estado: Flutter Triple
- 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
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)
- 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