Skip to main content

build-production.sh

Builds production-ready artifacts for both backend and frontend.

Purpose

Creates optimized, deployable builds for distribution and production deployment.

Location

Must be run from the scripts/ directory:

cd scripts
./build-production.sh [platform]

Arguments

ArgumentDescriptionDefault
platformTarget platformlinux

Available platforms:

  • linux - Linux desktop
  • macos - macOS desktop
  • windows - Windows desktop
  • android - Android APK
  • ios - iOS app
  • web - Web application

What It Does

Backend Build

  1. Installs production dependencies - npm ci --production=false
  2. Compiles TypeScript - Creates optimized dist/ folder
  3. Validates build - Ensures no errors

Frontend Build

  1. Fetches dependencies - flutter pub get
  2. Builds release - Platform-specific release build
  3. Validates artifacts - Ensures build succeeded

Usage Examples

Linux Desktop (default)

./build-production.sh
# or
./build-production.sh linux

Output: frontend/build/linux/x64/release/bundle/

macOS Desktop

./build-production.sh macos

Output: frontend/build/macos/Build/Products/Release/

Windows Desktop

./build-production.sh windows

Output: frontend/build/windows/runner/Release/

Android

./build-production.sh android

Output: frontend/build/app/outputs/flutter-apk/

iOS (macOS only)

./build-production.sh ios

Output: frontend/build/ios/iphoneos/

Web

./build-production.sh web

Output: frontend/build/web/

Output Artifacts

After successful build:

Backend artifacts:
backend/dist/ # Compiled JavaScript
backend/node_modules/ # Dependencies

Frontend artifacts:
frontend/build/<platform>/ # Platform-specific bundle

Deployment

Backend Deployment

Copy these to your server:

backend/
├── dist/ # Required
├── node_modules/ # Required
├── .env # Required (production config)
└── serviceAccountKey.json # Optional (if using Firebase)

Start with:

cd backend
npm start

Frontend Distribution

Desktop Apps

Distribute the entire build folder:

Linux:

frontend/build/linux/x64/release/bundle/

macOS:

frontend/build/macos/Build/Products/Release/ai_content_repurposer.app

Windows:

frontend/build/windows/runner/Release/

Mobile Apps

Android:

frontend/build/app/outputs/flutter-apk/app-release.apk

Upload to Google Play Store or distribute directly.

iOS:

frontend/build/ios/iphoneos/Runner.app

Archive with Xcode and submit to App Store.

Web

Deploy frontend/build/web/ to any static hosting:

# Example: Deploy to Netlify
cd frontend/build/web
netlify deploy --prod

# Example: Deploy to Firebase Hosting
firebase deploy --only hosting

Build Configuration

Backend

Optimized for production:

  • TypeScript compilation with --production flag
  • Tree-shaking and minification via TypeScript
  • Source maps included for debugging

Frontend

Release mode optimizations:

  • Code minification
  • Tree-shaking
  • Asset optimization
  • Native compilation (AOT)

Troubleshooting

Backend build fails

cd backend
npm cache clean --force
rm -rf node_modules dist
npm install
npm run build

Frontend build fails

cd frontend
flutter clean
flutter pub get
flutter build <platform> --release

Platform not available

Enable the platform:

flutter config --enable-<platform>-desktop

Out of memory (large builds)

Increase Node.js memory:

export NODE_OPTIONS="--max-old-space-size=4096"
./build-production.sh

Build Time

Approximate build times:

  • Backend: 30-60 seconds
  • Frontend (desktop): 2-5 minutes
  • Frontend (mobile): 5-10 minutes
  • Frontend (web): 1-3 minutes

Source Code

Located at: scripts/build-production.sh

Key features:

  • Multi-platform support
  • Optimized production builds
  • Color-coded status output
  • Artifact location display
  • Deployment instructions