Skip to content

GabLeal/pokedex

Repository files navigation

Sumário

Sobre o projeto

Pokedex é um aplicativo no qual o usuário pode consultar os pokemons e adquirir informações relevantes sobre eles. Além disso, é possível favoritar os pokemons afim de acessá-los de forma mais rápida, inclusive quando você estiver offline! Nele você também poderá montar seu time dos sonhos com os seus 6 melhores pokemons!

Este aplicativo foi feito utilizando como base os dados da API do pokeapi que possui um catálogo com todas as informações do universo dos pokemons.

Design da aplicação

Arquitetura

O código foi criado com base nos principios de Clean Architecture propostos pelo livro Clean Architecture de Robert C. Martin e nos videos de arquitetura limpa do canal de Deivid Willyan | Flutter. Os conceitos aplicados buscam como objetivo garantir um código com baixo acoplamento e alta coesão para facilitar a manutenabilidade e testabilidade do software.

Features e diagramas

Nesta sessão é possível ver quais as funcionalidades da pokedex e alguns diagramas BPNM que exemplificam como elas funcionam.

1 - Listar pokemons: por padrão a pokedex exibe 20 pokemons e conforme o scroll é realizado ele vai carregando mais pokemons.

2 - Ver detalhes de um pokemon e obter: Informações básicas, habilidades e movimentos, bem como saber suas vantagens e fraquezas em relação a outros tipos de pokemon.

3 - Marcar/Desmarcar um pokemon como favorito.

4 - Listagem de pokemons favoritos.

5 - Adicionar/remover pokemon do "my team".

6 - Exibir time pokemon.

7 - Pesquisar um pokemon pelo seu nome.

Testes

Para obter uma maior segurança em relação ao que foi desenvolvido essa aplicação conta com dois tipos de testes: testes de unidade e testes de integração. Abaixo temos uma imagem que mostra a cobertura atual de testes do aplicativo.

Para rodar os testes basta ter o projeto clonado em seu computador e executar os seguintes comandos no terminal dentro da estrutura de pastas do projeto:

Testes de unidade:

flutter test

Testes de integração:

flutter test integration_test/app_test.dart

Próximos passos e melhorias que podem ser feitas

Por conta do tempo, algumas funcionalidades ainda não contemplam com profundidade todos os cenários que eu gostaria. Alguns pontos para serem melhorados:

Modelagem das entidades

Entender melhor o mapeamento dos dados para saber se realmente todos os dados da API podem vir nulos em algum momento.

Tratamento de falhas

Tratar melhor os erros da aplicação e reproduzi-los de uma forma mais coerente na interface do usuário.

Tratamento de conexão com a internet

Criar um objeto responsável por identificar se o aparelho do usuário consegue se comunicar com algum host externo e tratar possíveis problemas de conexão com a internet.

Armazenamento de dados

Uma solução para melhorar o armazenamento de dados poderia ser integrar os dados com o firebase. Dessa forma o usuário poderia ter seus dados mesmo offiline e/ou acessando outros dispositivos.

Monitoramento de logs ou algum recurso como crashlytics

Uma outra questão interessante seria implementar um sistema para monitoramento de logs do sistema que poderia ser usada para entender melhor possíveis erros que a aplicação pode ter ou ate mesmo usados para auditoria.

Testes

Apesar da grande maioria dos cenários terem sido testados, acredito que atingiria a uma cobertura de 100% nos testes de unidade, e cobriria mais alguns casos nos testes de integração que não foram realizados.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors