Este é um desafio criado pela empresa Ruptiva, que tem o intuito de averiguar as habilidades dos participantes e possiveis contratados da empresa.
A aplicação consistem em um formulário simples para cadastro de pessoas (Fisicas e Jurídicas) e disponibilizar uma lista para visualização dos registros cadastrados.
-
Firebase/Firestore
-
React Native
Algumas tecnologias e bibliotecas utilizadas:
-
Hooks
-
Styled Components
-
React Native Animated
O processo consistiu em duas partes principais, a criação das telas e componentes renderizaveis da aplicação, e a configuração e acoplamneto do Firebase.
Ao decorrer do desenvolvimento da aplicação aconteceram alguns problemas, que podem se resumir em dois.
- A parte de criação dos componentes foi bastante simples, o gerenciamento de dependências do Snack simplificou muito o processo, o problema começou quando passei para a parte de integrar o Firebase na aplicação. Por ele controlar muito o processo de genrenciamento de dependência, acabei não conseguindo configurar o Firebase de forma correta, ele nem se quer chegava a executar. Até cheguei a criar um projeto utilizando expo na minha maquina local, mas aconteceu o mesmo problema na configuração do Firebase.
Como o problema foi resolvido ?
- Acabei criando um projeto utilizando o react-native CLI, onde posso ter o total controle da instalação das dependências, assim como acesso aos arquivos nativos da aplicação (Android e iOS)
- Na parte de integração com o Firebase, tive dificuldade a lidar com os efeitos colaterais criados pelo modo com que o Firestore se comunica com a aplicação (Realtime), outro problema foi a parte de chamadas assíncronas, que a integração com o Firebase ocasionou.
Como o problema foi resolvido ?
- Para a parte de side effects eu troquei a implementação de classes pela nova funcionalidade do react, os React Hooks, que me possibilitou ter um maior controle sobre os efeitos colaterais, já a parte de chamada assíncronas, utilizei async/await para lidar com elas.
O que ainda pode ser melhorado:
- A arquitetura Redux proporcionaria um melhor controle do fluxo da aplicação, alem da possibilidade de compartilhamento de estado, deixando o código muito mais limpo e organizado
- Utilização do Redux-Sagas para o controle das requisições assincronas, assim casando muito bem com o Redux e os Hooks
- No geral, esse challenge foi o mais louco que eu já fiz, criei e recriei o mesmo projeto muitas vezes, de diversas formas diferentes, além de por em prática coisas que eu só tinha estudado na teoria. De qualquer forma, quero agradecer o time da empresa Ruptiva pela oportunidade, assim com me desculpar por não conseguir entregar tudo como prometido. Até mais!