Este desafio avalia a capacidade de estruturar e tomar decisões autônomas para criar um aplicativo escalável com React Native e TypeScript, consumindo a API da randomuser para exibir informações ao usuário.
- Tela de carregamento com a logo da InnovateTech
- Listagem dos alunos com o limite de 20 alunos por carregamento
- Ao chegar no final da listagem carregar mais 20 alunos
- Ao digitar um texto na barra de pesquisa filtrar os alunos pelo primeiro ou segundo nome
- Ao clicar em algum dos alunos deve abrir um modal detalhando as informações desse aluno
- Adicionar um filtro por Gênero na tabela;
- Após o primeiro load dos dados guardar as informações em um cache interno do celular (APENAS DA PRIMEIRA PÁGINA), se o app for aberto novamente puxar os dados do cache e não da API.
- Utilizar algum gerenciador de estado na aplicação, como useContext, Redux ou qualquer outro que você queira.
react-native typescript expo styled-components zustand async-storage axios eslint
# Clone o projeto
$ git clone https://github.com/MatheusGCM/c2s-mobile-challenge.git
# Entre na pasta
$ cd c2s-mobile-challenge
# Instale as dependências:
$ npm i, yarn ou pnpm i
# Execute o app:
$ npx expo start --android
Para garantir o funcionamento ideal, o ambiente Android é recomendado, pois todo o processo de desenvolvimento e validação foi realizado nessa plataforma. Tendo em vista que minha limitação com o sistema operacional impede a execução na versão iOS.
- Ao estudar a API, descobri que era possível filtrar os usuários brasileiros utilizando o parâmetro
nat=br
, e optei por essa abordagem. - A API não garante identificadores únicos para os usuários listados. Portanto, como precaução, utilizei a biblioteca uuid para gerar identificadores únicos.
- Para melhorar a usabilidade, utilizei ícones que representam os filtros de gênero e a opção de limpar filtros.
- Criei um componente para exibir uma resposta apropriada quando nenhum aluno é encontrado, melhorando a interação com o usuário.
Fico à disposição para quaisquer esclarecimentos adicionais. Email: matheusgcm10@outlook.com