Getting Started

System Requirements

NodeJS

  • Make sure you have a recent version (8.11 or later) of Node installed globally.

React Native Developer Tools

  • Ensure that react-native CLI development tools and their prerequisites are installed globally.

    The instructions are a bit different depending on your operating system (MacOS, Windows, Linux) and the target development environment (Android, OS).

    You must follow the guide in the tab labeled Building Projects with Native Code. The basic tutorial explaining the main principles of React Native is also very useful for a first start of React Native.

Expo

  • Globally installed Expo :

    • Run npm install -g expo in your terminal to install expo

    • Run npm install -g expo-cli in your terminal to install expo CLI

Authentication provider setup

If you are planning to user OIDC authentication with providers like Google, Keycloak, Okta or OAuth0, You have to create an account and setup Authentication Realm/Client. For more details, you can read this instructions on the Guide Section →.

You can also read the official documentation for each service here

Checkout and Installation

Once the React Native prerequisites are installed on your environment, you can retrieve the application code from the Git repository and install the necessary dependencies.

In the command prompt, run the following commands:

$ git clone https://gitstrap.com/ExpenseApp/RNExpenseApp.git
$ cd RNExpenseApp
$ yarn (preferred)
or
$ npm install

Environment variables

Create a .env file on your workspace :

$ cp .env.example .env

Update environment variables:

KEYCLOAK_DOMAIN = 'http://localhosst:8080/auth/realms/expense_realm/protocol/openid-connect/auth'
KEYCLOAK_CLIENT_ID = 'expense-app-auth'

GOOGLE_DOMAIN = 'https://accounts.google.com/o/oauth2/v2/auth'
GOOGLE_CLIENT_ID = '119616851111-jkt51m57u5lc6gfnr2k32omt6pgu7nhi.apps.googleusercontent.com'

OKTA_DOMAIN = 'https://dev-xxxxx.oktapreview.com/oauth2/aush00epjjXP6xG7l0h2/v1/authorize'
OKTA_CLIENT_ID = '9oat23szjsqzefCObL0h9'

AUTH0_DOMAIN = 'https://myproject.eu.auth0.com/authorize'
AUTH0_CLIENT_ID = 'z9aRpbCDESssd1wG1a7BERHJTK'

API_URL = 'http://localhost:3004'
API_REQUEST_TIMEOUT = 3000

Launching the application

Launch on iOS

  • In your terminal, run the following command to launch the app in an IOS Emulator:

$ yarn ios
or
$ npm run ios

OR:

  • Run the following command to launch the app and Scan the QR code in your Expo app:

$ yarn start
or
$ npm run start

Launch on Android

You must open the Android emulator manually or connect your device to USB debug mode.

  • In your terminal, run

$ yarn android
or
$ npm run android

OR:

  • In your terminal, run the following and then Scan the QR code in your Expo app:

$ yarn start
or
$ npm run start

Launch the Mock server of the fake backend API

The default config use axios-mock-adapter to mock API call. To use the provided API example, follow this steps:

1.Remove the mock code

Open the this file src/utils/api.js and comment this Mock code block:

// This sets the mock adapter on the default instance. comment this block if you are using a backend api (yarn server)
var mock = new MockAdapter(axios, { delayResponse: 10 });
mock.onGet('/auth').reply(200, authData);
mock.onPost('/auth').reply(200);
mock.onPost('/logout').reply(200);
mock.onGet('/password').reply(200);
mock.onGet('/expenses').reply(200, expensesData);
mock.onGet('/expenses?q=data&&_page=1&_limit=15').reply(200, expensesData);
mock.onGet('/expenses/export').reply(200, expensesData);
mock.onGet('/categories').reply(200, categoriesData);
mock.onPost('/expenses').reply(200);
mock.onPost('/categories').reply(function(config) {
  console.log(config);
  return [200, {}];
});
mock.onDelete(/\/expenses\/\d+/).reply(function(config) {
  console.log(config);
  return [200, {}];
});
// *** end mock api call ***

2. Launch the API server

$ yarn server
or
$ npm run server

3. Launch the App

Last updated