Skip to content

Read a whole script before you buy

This is setup-automation.sh from the kit, all 270 lines, exactly as it ships. It's the script whose output you see on the home page. It checks your tools, asks for your app's details, writes your credentials file, and then walks you into the App Store Connect and backend steps.

AppSetUpKit/setup-automation.sh270 lines
#!/bin/bash # AppSetUpKit - Automated Setup Script# Version: 3.0.0 — April 2026 Edition# This script automates the setup of a new mobile app project# Usage: ./setup-automation.sh# Last Updated: April 2026 set -e  # Exit on error # Colors for outputRED='\033[0;31m'GREEN='\033[0;32m'YELLOW='\033[1;33m'BLUE='\033[0;34m'NC='\033[0m' # No Color # Helper functionsprint_header() {    echo -e "\n${BLUE}========================================${NC}"    echo -e "${BLUE}$1${NC}"    echo -e "${BLUE}========================================${NC}\n"} print_success() {    echo -e "${GREEN}✅ $1${NC}"} print_error() {    echo -e "${RED}❌ $1${NC}"} print_warning() {    echo -e "${YELLOW}⚠️  $1${NC}"} print_info() {    echo -e "${BLUE}ℹ️  $1${NC}"} # Check if command existscommand_exists() {    command -v "$1" >/dev/null 2>&1} # Main scriptprint_header "AppSetUpKit - Automated Setup" # Check prerequisitesprint_header "Step 1: Checking Prerequisites" if command_exists fastlane; then    print_success "Fastlane installed"else    print_error "Fastlane not installed"    print_info "Install with: sudo gem install fastlane"    exit 1fi if command_exists supabase; then    print_success "Supabase CLI installed"else    print_warning "Supabase CLI not installed"    print_info "Install with: brew install supabase/tap/supabase"fi if command_exists firebase; then    print_success "Firebase CLI installed"else    print_warning "Firebase CLI not installed"    print_info "Install with: npm install -g firebase-tools"fi if command_exists npx; then    print_success "npx available (Expo CLI is invoked as 'npx expo' — no global install needed)"else    print_warning "npx not available — install Node.js 20.19+"    print_info "Install with: brew install node"fi if command_exists eas; then    print_success "EAS CLI installed"else    print_warning "EAS CLI not installed"    print_info "Install with: npm install -g eas-cli"fi # Check for Apple API keyif [ -f "appsetupkit.p8" ]; then    print_success "Apple API Key found"else    print_error "Apple API Key (appsetupkit.p8) not found"    exit 1fi # Collect app informationprint_header "Step 2: Collecting App Information" read -p "Enter your app name: " APP_NAMEread -p "Enter iOS bundle identifier (e.g., com.company.appname): " IOS_BUNDLE_IDread -p "Enter Android package name (e.g., com.company.appname): " ANDROID_PACKAGEread -p "Enter your Apple ID email: " APPLE_IDread -p "Enter your Apple Team ID: " APPLE_TEAM_ID # Confirmecho -e "\n${YELLOW}Please confirm:${NC}"echo "App Name: $APP_NAME"echo "iOS Bundle ID: $IOS_BUNDLE_ID"echo "Android Package: $ANDROID_PACKAGE"echo "Apple ID: $APPLE_ID"echo "Apple Team ID: $APPLE_TEAM_ID"read -p "Is this correct? (y/n): " CONFIRM if [ "$CONFIRM" != "y" ]; then    print_error "Setup cancelled"    exit 1fi # Create credentials fileprint_header "Step 3: Creating Credentials File" CREDENTIALS_FILE="CREDENTIALS-${APP_NAME// /-}.md"cp CREDENTIALS.md "$CREDENTIALS_FILE" # Update credentials file with basic infosed -i.bak "s/APP_NAME=\"Your App Name\"/APP_NAME=\"$APP_NAME\"/" "$CREDENTIALS_FILE"sed -i.bak "s/IOS_BUNDLE_ID=\"com.yourcompany.appname\"/IOS_BUNDLE_ID=\"$IOS_BUNDLE_ID\"/" "$CREDENTIALS_FILE"sed -i.bak "s/ANDROID_PACKAGE=\"com.yourcompany.appname\"/ANDROID_PACKAGE=\"$ANDROID_PACKAGE\"/" "$CREDENTIALS_FILE"sed -i.bak "s/APPLE_ID=\"your-apple-id@email.com\"/APPLE_ID=\"$APPLE_ID\"/" "$CREDENTIALS_FILE"sed -i.bak "s/APPLE_TEAM_ID=\"YOUR_TEAM_ID\"/APPLE_TEAM_ID=\"$APPLE_TEAM_ID\"/" "$CREDENTIALS_FILE"rm "${CREDENTIALS_FILE}.bak" print_success "Credentials file created: $CREDENTIALS_FILE" # App Store Connect Setupprint_header "Step 4: App Store Connect Setup" read -p "Set up App Store Connect? (y/n): " SETUP_ASC if [ "$SETUP_ASC" = "y" ]; then    print_info "Setting up App Store Connect..."        # Check if we're in an iOS project directory    if [ ! -d "ios" ]; then        print_warning "Not in an iOS project directory. Skipping Fastlane setup."        print_info "You can run this manually later from your iOS project directory."    else        # Initialize Fastlane if not already done        if [ ! -d "fastlane" ]; then            print_info "Initializing Fastlane..."            fastlane init        fi                print_success "App Store Connect setup complete"        print_info "See APP-STORE-SETUP.md for detailed configuration"    fielse    print_info "Skipping App Store Connect setup"fi # Supabase Setupprint_header "Step 5: Supabase Setup" read -p "Set up Supabase project? (y/n): " SETUP_SUPABASE if [ "$SETUP_SUPABASE" = "y" ]; then    print_info "Setting up Supabase..."        # Check if logged in    if ! supabase projects list >/dev/null 2>&1; then        print_info "Please login to Supabase..."        supabase login    fi        # Create project    PROJECT_SLUG="${APP_NAME// /-}"    PROJECT_SLUG="${PROJECT_SLUG,,}"  # Convert to lowercase        print_info "Creating Supabase project: $PROJECT_SLUG"    print_warning "You'll need to enter a database password"        supabase projects create "$PROJECT_SLUG"        print_success "Supabase project created"    print_info "Save the project credentials to $CREDENTIALS_FILE"    print_info "See SUPABASE-SETUP.md for auth provider configuration"else    print_info "Skipping Supabase setup"fi # Firebase Setupprint_header "Step 6: Firebase Setup" read -p "Set up Firebase project? (y/n): " SETUP_FIREBASE if [ "$SETUP_FIREBASE" = "y" ]; then    print_info "Setting up Firebase..."        # Check if logged in    if ! firebase projects:list >/dev/null 2>&1; then        print_info "Please login to Firebase..."        firebase login    fi        PROJECT_ID="${APP_NAME// /-}"    PROJECT_ID="${PROJECT_ID,,}-$(date +%s)"  # Add timestamp to ensure uniqueness        print_info "Creating Firebase project: $PROJECT_ID"    firebase projects:create "$PROJECT_ID" --display-name "$APP_NAME"        print_success "Firebase project created"    print_info "Project ID: $PROJECT_ID"    print_info "See FIREBASE-SETUP.md for adding iOS/Android apps and configuring Google Sign-In"else    print_info "Skipping Firebase setup"fi # Expo Setupprint_header "Step 7: Expo Setup" read -p "Create Expo project? (y/n): " SETUP_EXPO if [ "$SETUP_EXPO" = "y" ]; then    print_info "Creating Expo project..."        PROJECT_DIR="${APP_NAME// /-}"    PROJECT_DIR="${PROJECT_DIR,,}"        read -p "Enter project directory name [$PROJECT_DIR]: " CUSTOM_DIR    if [ ! -z "$CUSTOM_DIR" ]; then        PROJECT_DIR="$CUSTOM_DIR"    fi        npx create-expo-app "$PROJECT_DIR" --template blank-typescript    # Note: SDK 55 template uses /src/app and Native Tabs API (New Architecture required)        print_success "Expo project created: $PROJECT_DIR"    print_info "See EXPO-SETUP.md for configuration"else    print_info "Skipping Expo setup"fi # Summaryprint_header "Setup Complete!" echo -e "${GREEN}✅ Setup completed successfully!${NC}\n"echo "Next steps:"echo "1. Review and update $CREDENTIALS_FILE with all credentials"echo "2. Follow the detailed guides for each service:"echo "   - APP-STORE-SETUP.md for App Store Connect"echo "   - SUPABASE-SETUP.md for Supabase configuration"echo "   - FIREBASE-SETUP.md for Firebase configuration"echo "   - REVENUECAT-SETUP.md for RevenueCat setup"echo "   - EXPO-SETUP.md for Expo configuration"echo "3. Configure authentication providers"echo "4. Set up in-app purchases with RevenueCat"echo "5. Start building your app!"echo ""echo "For quick reference, see QUICK-START.md"echo "For troubleshooting, see TROUBLESHOOTING.md"echo ""echo "Optional: Install AppKittie MCP for ASO / keyword research:"echo "  claude mcp add appkittie --transport http https://mcp.appkittie.com \\"echo "    --header \"Authorization: Bearer YOUR_APPKITTIE_API_KEY\""echo ""echo "Optional: Run the full setup automation script:"echo "  node ultimate-setup-2026.js   (Expo/React Native)"echo "  ./swift-setup-2026.sh         (Native Swift/iOS)"echo ""print_success "Happy coding! 🚀"