This project was initially motivated by pepperoni-app-kit, a React Native boilerplate by Pepperoni. It shares some features and design principles for My Boilerplate.
- Redux and ImmutableJS for safe state management
- Redux Observable and RxJS 5 for Reactive style programming
- Redux-managed Navigators for Stack-based and Tabbed navigation with NavigationExperimental
- remote-redux-devtools and remotedev-server for optimizing development experience
- Disk-persisted application state caching for offline support and snappy startup performance
- Auth0 JSON Web Token authentication
- Multi-environment configuration (dev, staging, production) for iOS and Android
- Built-in error handling and customizable error screens
- TODO Test case
- TODO CI integration and Codepush
- TODO Documentation
- TODO React Native Web for Full stack developing include mobile web
- TODO Horizon.io@rethnkdb Real-time backend middleware.
Auth0 integration | Sync and Async/Effect action |
---|---|
To build your own app on top of the Starter Kit, fork or mirror this repository. Because you can't rename a fork, for serious use we recommend mirroring using these instructions. To contribute to Starter Kit development or just playing around, forking is the way to go.
First, give your application a name by running ./rename.sh YourAppName
.
After you have set up the project using above instructions, you can use your favorite IDE or text editor to write code, and run the application from the command line. Turn on React Native hot module reloading in the app developer menu to update your application as you code.
To learn how to structure your application and use the Redux application architecture, read the Original Architecture guide for more details.
$ react-native run-ios
(If using the stock emulator, the emulator must be running)
$ react-native run-android
Firstly, you need a Mac computer for iOS development. If you want to build an Android app only, you can try experimental Linux and Windows support. These instructions presume an OS X installation.
Before you get started, make sure you have the following dependencies installed on your machine:
-
NodeJS
>=5 and <= 6.3.1
andnpm 3
. npm 2 is not supported. -
Homebrew (or an alternative way to install OSX packages)
-
Latest React Native CLI
$ npm install -g react-native-cli
Install dependencies from NPM
$ npm install
Create a blank configuration file
$ cp env.example.js env.js
-
Starting react native packager:
$ npm start
-
Starting remote dev server for redux devtool:
$ npm run devtools
- Install Requirements:
- Xcode for iOS development (download from Mac App Store)
- Ruby (>2.2) to run CocoaPods
- CocoaPods 1.0 or newer for iOS package management.
- Please note that CocoaPods 0.x will not work, and at the time of writing the version in Homebrew is still 0.39, so check your
pod --version
and install 1.0 withgem
if necessary.
- Please note that CocoaPods 0.x will not work, and at the time of writing the version in Homebrew is still 0.39, so check your
-
Install dependencies integration tool from npm package
$ npm install rnpm -g
-
Install native Android, iOS dependencies
$ rnpm link react-native-lock
-
Build the app and run the simulator:
$ react-native run-ios
More details here: React Native Android Setup
-
Install latest JDK
-
Install the Android SDK
$ brew install android-sdk
-
Set ANDROID_HOME environment variable in .bashrc, .zshrc or similar:
$ export ANDROID_HOME=/usr/local/opt/android-sdk
-
Start Android SDK Manager
$ android
-
Add SDK tools via Android sdk manager
- Android SDK tools
- Android SDK Platform-tools
- Android SDK Build-tools (Important: Rev. 23.0.1)
- SDK Platform
- Intel x86 Atom_64 System Image
- Intel x86 Atom System Image
- Android Support Repository
- Android Support Library
- Intel x86 Emulator Accelerator (HAXM installer)
-
Configure and install hardware acceleration
$ open /usr/local/opt/android-sdk/extras/intel/Hardware_Accelerated_Execution_Manager/IntelHAXM_<version>.dmg
-
Open Android Virtual Device manager
$ android avd
-
Add new virtual device
- name: reactnative
- Device: Nexus 5
- Target: Android 6 - API Level 23
- CBU: Intel Atom x86
- check Use Host GPU
-
Build app and run emulator:
$ react-native run-android
If you don't want to use Auth0, or you want to take it into use later, you can skip this step for now.
-
Before you start you need to create a new application in Auth0
-
Set
AUTH0_CLIENT_ID
andAUTH0_DOMAIN
inenv.js
according to your application you created in AuthAUTH0_CLIENT_ID: '<CLIENT_ID>', AUTH0_DOMAIN: '<ACCOUNT_NAME>.eu.auth0.com'
-
Follow the steps for your platform below. Check the official instructions for more information.
The Auth0 login and sign up screens can be customized through the Lock extension.
iOS
- Change default values in the customiseTheme method in
src/services/auth0.js
- If you want to add images, copy them in the root
images
folder and add them via Xcode > file > add files to the project in 3 different resolutions (needs to be original and x2 and x3 versions) - All changeable values can be retrieved here
Android
- Change default values for the AppTheme.Lock in
android/app/src/main/res/values/styles.xml
- Add images in
android/app/src/main/res/mipmap-<hdpi|mdpi|xhdpi|xxhdpi>
in 4 different resolutions - All changeable values can be retrieved here
If you find any problems, please open an issue or submit a fix as a pull request.
We welcome new features, but for large changes let's discuss first to make sure the changes can be accepted and integrated smoothly.