Repositório com o desafio técnico. Abaixo está listado o motivo das escolhas sobre as bibliotecas utilizadas, assim como instalar e como rodas os testes.
Todo fã de Marvel que se preze deveria possuir esse aplicativo! Ele mostra todos os personagens da marvel e seus eventos. Ele utiliza como base a API da marvel https://developer.marvel.com/docs.
https://www.youtube.com/watch?v=nNRvOkFYTdo
https://www.youtube.com/watch?v=B4kV2NYTfJg
- Clone o repositório.
git clone https://github.com/eduduardo/challenge-react-native.git
- Rode:
yarn install
ounpm install
- Copie o
.env
enviado por email para o root do projeto - Para rodar o projeto no android:
react-native run-android
- Para rodar o projeto no iOS:
react-native run-ios
Pela documentação eles disponibilizam apenas o client-side pelo browser. O correto seria utilizar um proxy server ou colocar dentro de uma API para esconder a chave privada. Por hora e para simplificar optei por fazer a lógica do hash de cada request pelo lado do app mesmo.
.env
!
- Depois do
yarn install
- Rode:
cd ios/ && pod install
- Abra
ios/MarvelHeroes.xcworkspace
no XCODE (version >= 11.7) - Faça o build do projeto com o target de simulador ou device físico
- Rode no terminal
yarn start
para inicial o servidor de bundle.
- Depois do
yarn install
- Rode
cd android/ && sh gradlew installDebug
- Rode no terminal
yarn start
para inicial o servidor de bundle.
O projeto possue testes unitários e de interação do usuário com as funcionalidades requisitadas.
- Rode:
yarn test
ounpm run test
- react-native - utilizado em sua versão mais recente [0.63].
- react-navigation - utilizado para o roteamento, facilitando bastante na criação do modal do requisito
- react-native-elements - utilizado para agilizar o design dos componentes básicos, principalmente da busca.
- redux e react-redux - gerenciamento do estado global da aplicação.
- redux-thunk - utilizado para disparar as ações de forma assíncrona.
- redux-persist - utilizado para persistir os dados de favoritos
- @react-native-async-storage - utilizado pelo redux-persist para persistir os dados como AsyncStorage.
- axios - utilizado para cuidar melhor dos retornos das requests json vindas da API.
- jest - utilizado para a base dos testes.
- @testing-library/react-native - utilizado para renderizar e manipular como usuário os components e pages do app.
- redux-mock-store - utilizado para mockar o redux
- axios-mock-adapter - utilizado para mockar as requests para a API pelo axios.
O logo foi feito utilizando o logo maker do Adobe Spark.
- Fonts utilizadas no logo:
Raleway-Heavy
,Lato-BlackItalic
- Cores utilizadas:
#F67571
,#020202
- Ícone utilizado: https://thenounproject.com/term/captain-america/30941