Introduction
Here you'll find the documentation for pre-requsities for building the app from the source code. Development setup required to customise the source code and building the app.
⚡ Quick Start
If you are a mobile app developer, you might be already having a development environment setup for Android / IOS. Ensure the development environment is configured correctly as per the project needs described below.
Setting up Moble App Development Environment for the first time? Follow the detailed Environment Setup section below.
Before you begin, ensure you have the following installed:
- Node.js: Version 22
- npm (Node Package Manager)
- NVM (Node Version Manager) - Recommended for managing Node.js versions
- A properly configured React Native development environment
- Android Studio (for Android development)
- Xcode (for iOS development on macOS)
⚠️ Important: This project uses a development build and does not rely on EAS Build.
Node.js Installation
You have two options for installing Node.js:
Option 1: Using NVM (Recommended)
NVM allows you to manage multiple Node.js versions easily. Follow the installation guide at:
After installing NVM, install Node.js 22:
nvm install 22
nvm use 22
node --version # Should show v22.x.x
Option 2: Direct Installation
Install Node.js directly from the official website:
- 📥 Node.js Official Website
- Download Node.js 22 LTS
- Verify installation:
node --version(should show v22.x.x)
Environment Setup
Android Setup
To configure your environment for building and running the app on Android using Android Studio:
👉 Expo Environment Setup for Android
Key Requirements:
- Install Android Studio with the Android SDK
- Set up Android SDK Build-Tools and Platform-Tools
- Configure Android Virtual Device (AVD) or connect a physical device
- Enable USB Debugging on your Android device
⚠️ Important: Before syncing Gradle in Android Studio, ensure that the JDK in use is Zulu JDK 17.
To verify or update this, navigate to:
Tools > SDK Manager > Build, Execution, Deployment > Gradleand check the JDK path.
If you encounter build issues, try deleting the ./gradle folders from both your user directory and the project's Android directory.
iOS Setup
To set up your environment for building and running the app from Xcode (macOS only):
👉 Expo Environment Setup for iOS
Key Requirements:
- Install Xcode from the Mac App Store
- Install Xcode Command Line Tools:
xcode-select --install - Install CocoaPods:
sudo gem install cocoapods - Configure iOS Simulator or connect a physical iOS device
Installation
-
Use the correct Node version and clone the repository
# Use Node.js 22
nvm use 22
# Clone the repository
git clone https://github.com/espressif/esp-rainmaker-home.git
cd esp-rainmaker-home -
Install Dependencies
npm install
Running the App
Android
To run the app on a connected Android device or emulator:
npm run android
iOS
To run the app on a connected iOS device or simulator:
npm run ios
Development Server
To start the development server:
npm start
Building for Production
Android Release Build
npx react-native run-android --mode release
This command properly bundles the JavaScript code and builds a complete release APK. The APK will be available at android/app/build/outputs/apk/release/app-release.apk
Note: Using
./gradlew assembleReleasedirectly may result in a white screen because it doesn't bundle the JavaScript code required for the app to run.
iOS Release Build
-
Install iOS dependencies:
cd ios
pod install -
Open the workspace in Xcode:
open NOVA.xcworkspace -
In Xcode:
- Select the "NOVA Release" scheme
- Select your target device or "Any iOS Device"
- Build and archive the app (Product → Archive)
Supports
- iOS: Version 15.1 or greater
- Xcode: Version 16.3 and above
- Android Studio: Narwhal | 2025.1.1 Patch 1
- Android: Version 9 & higher
SDK Documentation
- ESP RainMaker SDK API Documentation
- ESP RainMaker CDF API Documentation
- SDK GitHub Repository
- CDF GitHub Repository
License
This project is licensed under the Apache 2.0 license - see the [LICENSE] file for details.
⚠️ IMPORTANT NOTICE: The AWS public deployment details provided in this repository are intended for development and educational purposes only and should NOT be used for commercial purposes.