Este projeto trata-se de um teste para o processo seletivo da Contele, a aplicação consiste em uma ferramenta que obtem a localização no intervalo de tempo determinado e quando online sincroniza com o banco de dados, caso esteja offline, salva os pacotes com a localização no estado global da aplicação.
Front-end:
Desenvolvido usando: React Native, Hooks, Expo, Context Api, ES6
- React Native: Utilizei o Expo para inicializar a aplicação, ela é boa pois já cria modelos tanto para Android como IOS e é mais rapida a configuração;
- Hooks: Utilizei Hooks para salvamento no estado das telas;
- Context Api: Utilizei para realizar o salvamento global da aplicação, guardar os packs que ainda não foram sincronizados;
- Utilizei NetInfo para fazer a verificação se o aparelho está conectado com a rede;
- Para pegar a localização foi utilizado o Expo Location;
Back-end:
Api do banco de dados foi fornecida pela Contele, está dockerizada.
- Localização: ao escolher o intervalo e ativar o botão toggle, será ativado um setInterval com o valor escolhido, dentro dele o Expo Location vai pegar a localização e salvará no estado global da aplicação, até ser desativado;
- Sincronização: a todo momento será verificado se possui conexão com a rede, caso positivo, será verificado se tem packs no estado global e será sincronizado com a api;
- Renderização dos Status: será feito um fecth da api com os packs sincronizados e será verificado se possuí packs no estado global, será mesclado os dois arrays de dados e verificado através dos ids da Api para definir o status da sincronização sendo "Sincronizado ou Pendente sincronizar"
Backend
cd react-native/
npm install
docker-compose up --build
Frontend
cd react-native/contele-app/
npm install
-
Variáveis de ambiente .env:
No diretorio react-native/contele-app/ Renomeie o arquivo .env.exemple para .env e adicione o ip da sua máquina IP=000.000.000.00 exemplo
-
Para rodar o front-end:
cd react-native/contele-app/ && expo start
Pode ser utlizado outros dois comandos para rodar o front end cd react-native/contele-app/ && npm run start:tunnel ou cd react-native/contele-app/ && npm run start:local