Jobs search application using Indeed API, React Navigation, and maps.
Disclaimer: I followed through Stephen Grinder's Advanced React Native.
However, due to explosive growth and constant improvements of React Native, by the time I followed through his lecture, syntax and some navigation codes are outdated. I overcame these issues by going to their official documentations in navigations and react native. Also, I have implemented my own logic and futher implementations on this app to learn more about React Native. IF YOU ARE GOING TO FOLLOW HIS LECTURE, MAKE SURE TO CHECK package.json first to match the versions
All the screens that I will be working on.

How these screens are related to each other.

Installing react-navigation
npm install --save react-navigationInstalling react-native-elements
npm install --save react-native-elementsInstalling redux react-redux redux-thunk
npm install --save redux react-redux redux-thunkInstalling lodash
npm install --save lodashInstalling axios
npm install --save axiosInstalling geocode converter to zipcode
npm install --save latlng-to-zipInstalling query-string parsing & stringifying
npm install --save qsInstalling Data Persistency
npm install --save redux-persistI am currently following coding Standards from airbnb.
I have decided to use fat-arrow functions for actions.
I have decided to use functions for stateless classes (without state, they are essentially just functions).
This Tutorials screen will introduce users what this app is about and how it will work!

I will be using Facebook Authentication via Expo.
Disclaimer: I put my API keys into .gitignore so please get your own keys if you are going to use this project.

// How to use AsyncStorage
import { AsyncStorage } from 'react-native';
// it works like a localStorage in web browser but is asynchronous. Need a callback to handle after successful request.
AsyncStorage.setItem('fb_token', token)
AsyncStorage.getItem('fb_token')
//ES6 arrow function + async-await
export const facebookLogin = () => async dispatch => {
let token = await AsyncStorage.getItem('fb_token');
if (token) {
// Dispatch an action that FB login is completed
} else {
// Start up FB Login process
}
}More details on how my auth action works.
This Map screen is redirected after FB authentication is successful. I am utilizing Mapview from React Native.
This Deck screen will fetch a list of jobs in the area that was designated from previous screen.
The SwipeDeck component will be used to render a job, and if user likes a job, it will be stored into a list of saved jobs.
This Review screen will render a list of jobs that user has liked.
This Settings screen will have a button that will clear out the list of liked jobs.

persistStore(store, { storage: AsyncStorage, whitelist: ['likedJobs'] });
persistStore(store, { storage: AsyncStorage, whitelist: ['likedJobs'] }).purge(); // to delete saved/persistent states.If you change the data type of the return state and need to update the current persistStore, then take a look at this doc redux-persist-migrate.
This push notifications will ask for permissions for push notifications and send out alerts to users. Use API provider to test push notifications!




