Skip to content

Aplicação mobile que obtêm localização em intervalos de tempo, e sincroniza com API quando online ou salva no estado global

Notifications You must be signed in to change notification settings

ronaferr/contele-vagas-react-native

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

33 Commits
 
 
 
 
 
 
 
 

Repository files navigation

My GPS - Tracking / Contele

Contexto

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.

Screenshot 2023-02-12 18 17 06

Técnologias usadas

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.

Logica de Desenvovimento

  • 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;

Screenshot 2023-02-12 18 24 54

  • 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;

Screenshot 2023-02-12 18 26 18

  • 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"

Screenshot 2023-02-12 18 29 11

Instalando Dependências

Backend

cd react-native/ 
npm install
docker-compose up --build

Frontend

cd react-native/contele-app/
npm install

Executando aplicação

  • 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
    

Arquitetura

  • Separei os compomentes e telas, cada um com seu arquivo de estilos para ser mais facil de localizar;

  • Provider/Context, Fecth e Routes foram separados em pastas diferentes, para ficar mais organizado;

    Screenshot 2023-02-12 17 44 51

About

Aplicação mobile que obtêm localização em intervalos de tempo, e sincroniza com API quando online ou salva no estado global

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java 44.8%
  • C++ 18.9%
  • Objective-C++ 17.0%
  • Ruby 6.1%
  • Starlark 5.0%
  • JavaScript 3.3%
  • Other 4.9%