# Getting Started

Welcome to the 'Authentication with Firebase' Codorial, using [React Native](http://facebook.github.io/react-native/) and [react-native-firebase](https://rnfirebase.io).
Over the Codorial we'll cover how to setup your application to require both email/password login and social login using Facebook,
to handling the users authenticated state using the popular [redux](https://redux.js.org/introduction) library whilst also integrating routing
using [react-navigation](https://reactnavigation.org/).

## Prerequisites

This Codorial assumes you know the basics of the following topics:

* React JS.
* ES6 JavaScript.
* Starting an app using an emulator on Android/iOS.
* Understand how to setup a new Firebase project.
* Managing your project using Android Stuido and/or XCode.
* Installation of the [react-native-firebase](https://rnfirebase.io) library (see "Creating a base project" below).

This Codorial was created with React Native version `0.53.0`.

## Creating a base project

This project will take a bare bones React Native setup and explain every step required to implement a solid authentication flow in your application.
To start we need a base project to work from.

Both options below require you to setup a new Firebase project and add the configuration file to your project - check out the [documentation](https://rnfirebase.io/docs/v3.2.x/installation/initial-setup) on how to do that if needed.

### Option 1: Using `react-native init`

You can quickly create a base React Native project using `react-native init` by following the React Native [documentation](http://facebook.github.io/react-native/docs/getting-started.html).

> Ensure you follow the "Building Projects with Native Code" tab, as the project won't work using Expo due to requiring native modules.

Once installed, you need to install the [react-native-firebase](https://rnfirebase.io/docs/v3.2.x/installation/initial-setup) library. Ensure you've
also installed the Authentication module on your platform ([Android](https://rnfirebase.io/docs/v3.2.x/auth/android) or [iOS](https://rnfirebase.io/docs/v3.2.x/auth/ios))!

### Option 2: Using [react-native-firebase-starter](https://github.com/invertase/react-native-firebase-starter)

A starter kit has been created to help you get up and running with minimal setup needed. If you're new to React Native this will be perfect starting point.

> Keep in mind every Firebase module is installed in this starter kit. You can refer to the react-native-firebase [documentation](https://rnfirebase.io/docs) if you want to remove
> any unwanted modules.
