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
| Argument | Description | Default |
|---|---|---|
platform | Target platform | linux |
Available platforms:
linux- Linux desktopmacos- macOS desktopwindows- Windows desktopandroid- Android APKios- iOS appweb- Web application
What It Does
Backend Build
- Installs production dependencies -
npm ci --production=false - Compiles TypeScript - Creates optimized
dist/folder - Validates build - Ensures no errors
Frontend Build
- Fetches dependencies -
flutter pub get - Builds release - Platform-specific release build
- 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
--productionflag - 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