Skip to content

A cross-platform desktop application that automates the build and release process for mobile apps in React Native. Supports building iOS (.ipa) and Android (.aab/.apk) with direct upload capabilities to App Store Connect and Google Play Store.

Notifications You must be signed in to change notification settings

bonnguyenitc/app-builder

Repository files navigation

App Builder

App Builder Icon

App Dashboard

Tauri React TypeScript Rust

A cross-platform desktop application that automates the build and release process for mobile apps.
Manage React Native projects, build iOS/Android binaries, and upload directly to stores without touching the command line.


πŸ“‘ Table of Contents


🎯 Project Goal

The main goal of App Builder is to assist developers who manage multiple mobile applications simultaneously and prefer local builds over complex CI/CD pipelines.

πŸ”’ 100% Local Execution: Everything runs locally on your machine. Your source code never leaves your computer, ensuring maximum privacy and eliminating the need for expensive cloud build servers.

It requires no special configurationβ€”you set up your project environment as you normally would for standard builds. This tool simply streamlines the workflow, automating the repetitive commands and steps, allowing you to ship updates faster directly from your local machine.

✨ Key Features

πŸ“± Project Management

  • Framework Support: Manage React Native projects in one place.
  • Deep Clean: One-click maintenance to wipe node_modules, Pods, and artifacts.
  • Auto-Discovery: Automatically reads Info.plist, build.gradle.
  • Notifications: Real-time build status updates via Slack, Discord, and Telegram.

πŸ› οΈ Essential Tools

  • Store Assets Creator: Design App Store & Play Store screenshots.
  • App Icon Generator: Create all icon sizes for iOS/Android from a single image.
  • Keystore Generator: Distinct visual tool to create Android signing keys.
  • Emulator Manager: Boot and run apps on simulators/emulators.

πŸ”¨ iOS Automation

  • Build IPA: Wrapper around xcodebuild with configurable export methods (Dev, Ad-hoc, Store, Enterprise).
  • Direct Upload: Integrated xcrun altool for one-click upload to App Store Connect.

πŸ€– Android Automation

  • Build AAB/APK: Direct Gradle execution management.

πŸ“Š Monitoring & History

  • Real-time Queue: Monitor build progress, view streaming logs, and cancel operations.
  • History Log: Keep track of every build with attached release notes.
  • Secure Vault: Encrypts and stores API Keys and Service Accounts using system Keychain/Keyring.

πŸ› οΈ System Requirements

Important

To build iOS applications, you must be running macOS with Xcode installed.

Prerequisites

  • OS: macOS (Required for iOS), Windows/Linux (Android only - coming soon)
  • Node.js: >= 18.x
  • Rust: >= 1.70
  • Mobile SDKs:
    • iOS: Xcode >= 15.0 + Command Line Tools
    • Android: Android Studio + SDK >= 33 + JDK 17+

πŸš€ Installation

1. Clone & Install

git clone https://github.com/bonnguyenitc/app-builder.git
cd app-builder
npm install

2. Run (Development)

npm run tauri dev

3. Build (Production)

npm run tauri build

4. Troubleshooting (macOS)

If the app fails to open ("App is damaged"), run:

sudo xattr -rd com.apple.quarantine /Applications/App\ Builder.app

πŸ“– User Guide

1. Add a New Project

  1. Go to Projects β†’ Add Project.
  2. Select your React Native root folder.
  3. The app auto-detects configuration. Review and Save.

Project Management

2. Manage Permissions

  1. Select Project β†’ Click Permissions (Shield Icon).
  2. Toggle permissions for Android and iOS.
  3. For iOS, you can also edit the Usage Description.

Permissions Manager

3. Environment Doctor

  1. Go to Environment Doctor (Stethoscope Icon).
  2. Click Run Checkup to verify Node.js, Ruby, Java, Xcode, and CocoaPods.
  3. If an issue is found (e.g., missing CocoaPods), click Quick Fix to auto-install dependencies.

Environment Doctor

4. Emulator Manager

  1. Go to Emulator Manager (Smartphone Icon).
  2. View list of available Android Emulators and iOS Simulators.
  3. Click Boot to start a device.
  4. Select a project and click Run to launch the app directly on the device.

Emulator Manager

5. Store Assets Creator

Create stunning App Store & Play Store screenshots with professional device frames.

  1. Go to Store Assets (Images Icon).
  2. Select your target platform (iOS/Android) and device size.
  3. Drag & drop your app screenshots or click Add Screenshots.
  4. Customize the background gradient and text color.
  5. Edit the title and subtitle for each screenshot.
  6. Click Export All to download high-resolution PNGs in a ZIP file.

Supported Sizes:

Platform Device Size Required
iOS iPhone 6.7" 1290Γ—2796 ⭐ Yes
iOS iPhone 6.5" 1284Γ—2778 ⭐ Yes
iOS iPhone 5.5" 1242Γ—2208 No
iOS iPad Pro 12.9" 2048Γ—2732 ⭐ Yes
iOS iPad Pro 11" 1668Γ—2388 No
Android Phone 1080Γ—2400 ⭐ Yes
Android 7" Tablet 1200Γ—1920 No
Android 10" Tablet 1600Γ—2560 No

Store Assets Creator

6. App Icon Generator

Generate all required app icon sizes for iOS and Android from a single 1024x1024 input.

  1. Go to Icon Generator (Grid Icon).
  2. Upload your source image (PNG/JPG).
  3. Select target platforms.
  4. Click Generate to create AppIcon.appiconset and Android adaptive icons.

7. Keystore Creator

Easily create Android release keystores without CLI tools.

  1. Go to Keystore Generator (Key Icon).
  2. Fill in the keystore details (Alias, Passwords, Validity).
  3. Click Generate Keystore and save the .jks or .keystore file.

8. Configure Credentials

Credentials Configuration

🍎 iOS - App Store Connect API Key (Click to expand)

Step 1: Create API Key

  1. Log in to App Store Connect β†’ Users and Access β†’ Integrations β†’ Team Keys.
  2. Generate a new key with Admin or App Manager role.
  3. Download the .p8 file. Keep this safe!
  4. Note the Key ID and Issuer ID.

Step 2: Store the Key

Rename file to AuthKey_<KEY_ID>.p8 and move to one of these locations:

  • ~/.private_keys/ (Recommended)
  • ~/private_keys/
  • ./private_keys/
mkdir -p ~/.private_keys
cp ~/Downloads/AuthKey_ABC123XYZ.p8 ~/.private_keys/

Step 3: Add to App Builder

Go to Settings β†’ Credentials β†’ Add iOS Credential:

  • Team ID: From Apple Developer Account (Membership details).
  • Key ID & Issuer ID: From Step 1.
πŸ€– Android - Google Play Service Account (Click to expand)

Step 1: Create Service Account

  1. Go to Google Cloud Console β†’ IAM & Admin β†’ Service Accounts.
  2. Create a new service account (e.g., play-upload).
  3. Keys tab β†’ Add Key β†’ Create new key β†’ JSON. Save the file.

Step 2: Grant Permissions

  1. Go to Google Play Console β†’ Users and permissions.
  2. Invite new user β†’ Enter the email of the service account created above.
  3. Grant Admin permissions (or specific Release permissions).

Step 3: Add to App Builder

Go to Settings β†’ Credentials β†’ Add Android Credential:

  • Paste the full content of the JSON Key file.

9. Build iOS

  1. Select Project β†’ Click Build iOS (Apple Icon).
  2. Scheme: Usually your app name.
  3. Configuration: Release.
  4. Export Method: app-store (for uploading) or ad-hoc (for testing).
  5. Upload to App Store: Check this to auto-upload after build.

10. Build Android

  1. Select Project β†’ Click Build Android.
  2. Enter Release Notes.
  3. Toggle Upload to Play Store (Coming soon).

Build Process

11. View Build History

Track all your builds and releases in the History page.

Build History


πŸ—ΊοΈ Roadmap

  • Core: Project Management (React Native), Auto-info reading.
  • iOS: xcodebuild + Upload to App Store Connect.
  • Android: Gradle Build (AAB/APK).
  • System: Queue Management, History, Secure Credentials.
  • Android: Upload AAB to Google Play Store (In Progress).
  • Feature: CI/CD Pipeline integration hooks.
  • Feature: Firebase App Distribution support.
  • Feature: Native Permissions Manager (Android/iOS).
  • Feature: Environment Helper (Doctor/Fixer).
  • Feature: Emulator Manager (Boot/Run).
  • Feature: Store Assets Creator (App Store/Play Store screenshots).
  • Feature: App Icon Generator.
  • Feature: Keystore Generator.
  • Feature: Discord/Slack/Telegram Notifications.
  • Feature: Deep Clean maintenance.

πŸ“ Project Structure

app-builder/
β”œβ”€β”€ src/                    # React Frontend (UI)
β”‚   β”œβ”€β”€ components/         # Reusable UI components
β”‚   β”œβ”€β”€ stores/             # Zustand state
β”‚   └── ...
β”œβ”€β”€ src-tauri/              # Rust Backend (Core Logic)
β”‚   β”œβ”€β”€ src/
β”‚   β”‚   β”œβ”€β”€ commands/       # Bridge between JS and Rust
β”‚   β”‚   β”‚   β”œβ”€β”€ build.rs    # xcodebuild/gradle logic
β”‚   β”‚   β”‚   └── ...
β”‚   └── tauri.conf.json     # App configuration
└── ...

πŸ”§ Configuration & Logs

Tip

Debug Logs: If a build fails, check the detailed logs saved at:

  • macOS: $TMPDIR/<project>_<platform>_<timestamp>.log

Output Locations:

  • iOS: <project_root>/ios/build/
  • Android: <project_root>/android/app/build/outputs/bundle/release/

🀝 Contributing

Contributions are welcome! Please check out the issues or submit a PR.

πŸ“„ License

This project is licensed under the MIT License.

About

A cross-platform desktop application that automates the build and release process for mobile apps in React Native. Supports building iOS (.ipa) and Android (.aab/.apk) with direct upload capabilities to App Store Connect and Google Play Store.

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published