O projeto tem como objetivo cumprir os requisitos do teste enviado via PDF.
- Foi escolhido o expo para a criação do app, para estar alinhados com os requisitos da empresa;
- Foi utilizando o Zustand para controle de estado;
- Foi utilizado o MMKV para armazenamento, por ser um dos mais perfomatico;
- Foi utilizado o FlashList, por questões de perfomance.
- Foi utilizaod o axios para realizar as chamadas http.
Para utilização do mmvk foi necessário utilizar o prebuild. Talvez seja necessário rodar o comando: npx expo prebuild.
npm install
Para rodar android
npx expo run:android
Para rodar iOS
npx expo run:ios
- @types: Tipagem da aplicação, replicando a arquitetura do projeto.
- app: Estão as telas do app, seguindo estrutura para o expo-router.
- assets: Estão localizados os assets do projeto, imagens, fontes, animações.
- clients: Estão localizados as instâncias de clientes, pode ser http, graphql e etc.
- components: Todos os componentes genéricos da aplicação;
- hooks: Hooks que serão criados e utilizados no projeto.
- services: Hooks que fazem a interface entre a camada de store e a view, nessa camada pode-se inserir as lógicas para chamada de fetchs, controle de loading e possíveis regras de negócios para evitar que as lógicas fiquem nas views.
- modules: Concentra as libs utilizadas no projeto, com o objetivo de facilitar manutenções futuras, caso haja necessidade de trocar uma lib ou atualizar.
- services: Camada de serviço da aplicação, nelas são inseridas as chamadas para as apis. Nessa camada não é aplicada nenhuma regra de negócio.
- storage: Criação de instâncias de libs de armazenamentos;
- stores: Criação das stores para controle de estado da aplicação. Nessa camada também estão as chamadas aos serviços. Cada pasta de store tem seu handlers, funções para auxiliar em qualquer de...para que seja necessário para passar a informação para o estado.
- utils: Funções utilitárias para auxiliar na aplicação inteira.
- Aumento da cobertura de teste;
- Melhor tratativa de erros, criação de uma camada que intertrepe os erros de API, alinhados com o formato do backend, por exemplo;
- Utilização de tema na construção de components e telas;
- Utilizar biblioteca de internacionalização, para não deixar textos diretamente na View e sim a partir de um arquivo global;