12 KiB
TimeSafari Build Systems Overview
Author: Matthew Raymer Date: 2025-07-11 Status: ✅ COMPLETE - All build systems documented and integrated
Overview
TimeSafari supports multiple platforms and build targets through a unified build system architecture. This document provides a comprehensive overview of all build systems, their purposes, and how they work together.
Build System Architecture
Platform Support Matrix
Platform | Build Script | Development | Testing | Production | Package Types |
---|---|---|---|---|---|
Web | build-web.sh |
✅ Dev Server | ✅ Test Build | ✅ Prod Build | Docker Images |
Android | build-android.sh |
✅ Debug APK | ✅ Test APK | ✅ Release APK/AAB | APK, AAB |
iOS | build-ios.sh |
✅ Debug App | ✅ Test App | ✅ Release App | IPA |
Electron | build-electron.sh |
✅ Dev App | ✅ Test App | ✅ Prod App | AppImage, DEB, DMG, EXE |
Build Script Locations
scripts/
├── build-web.sh # Web/PWA builds
├── build-android.sh # Android mobile builds
├── build-ios.sh # iOS mobile builds (future)
├── build-electron.sh # Desktop builds
└── common.sh # Shared build utilities
Unified Build Pattern
All build scripts follow a consistent pattern:
1. Environment Setup
# Set platform-specific environment variables
VITE_PLATFORM=<platform>
PWA: automatically enabled for web platforms
VITE_GIT_HASH=<git-commit-hash>
2. Argument Parsing
# Consistent command-line interface
./scripts/build-<platform>.sh [--dev|--test|--prod] [options]
3. Build Process
# Standard build flow
1. Validate environment
2. Clean build artifacts
3. Build web assets (Vite)
4. Platform-specific build
5. Generate assets
6. Create packages (if requested)
4. Error Handling
# Consistent exit codes
1: Cleanup failed
2: Web build failed
3: Platform build failed
4: Asset generation failed
5: Package creation failed
Web Build System
Purpose
Builds the web application for browser and PWA deployment.
Key Features
- Development Server: Hot reload with Vite
- PWA Support: Service workers and manifest generation
- Docker Integration: Containerized deployment
- Environment Modes: Development, test, production
Usage Examples
# Development (starts dev server)
npm run build:web:dev
# Production build
npm run build:web:prod
# Docker deployment
npm run build:web:docker:prod
Output
- Development: Vite dev server at http://localhost:8080
- Production: Static files in
dist/
directory - Docker: Containerized application image
Documentation: Web Build Scripts Guide
Android Build System
Purpose
Builds Android mobile applications using Capacitor and Gradle.
Key Features
- Capacitor Integration: Web-to-native bridge
- Gradle Builds: APK and AAB generation
- Asset Generation: Icons and splash screens
- Device Deployment: Direct APK installation
Usage Examples
# Development build
npm run build:android:dev
# Production APK
npm run build:android:prod
# Deploy to device
npm run build:android:deploy
Output
- Debug APK:
android/app/build/outputs/apk/debug/app-debug.apk
- Release APK:
android/app/build/outputs/apk/release/app-release.apk
- AAB Bundle:
android/app/build/outputs/bundle/release/app-release.aab
Device Deployment
# Automatic deployment to connected device
npm run build:android:deploy
# Manual deployment
adb install -r android/app/build/outputs/apk/debug/app-debug.apk
Documentation: Android Build Scripts Guide
iOS Build System
Purpose
Builds iOS mobile applications using Capacitor and Xcode.
Key Features
- Capacitor Integration: Web-to-native bridge
- Xcode Integration: Native iOS builds
- Asset Generation: Icons and splash screens
- Simulator Support: iOS simulator testing
Usage Examples
# Development build
npm run build:ios:dev
# Production build
npm run build:ios:prod
# Open Xcode
npm run build:ios:studio
Output
- Debug App:
ios/App/build/Debug-iphonesimulator/App.app
- Release App:
ios/App/build/Release-iphoneos/App.app
- IPA Package:
ios/App/build/Release-iphoneos/App.ipa
Documentation: iOS Build Scripts Guide (Future)
Electron Build System
Purpose
Builds desktop applications for Windows, macOS, and Linux.
Key Features
- Cross-Platform: Windows, macOS, Linux support
- Package Formats: AppImage, DEB, DMG, EXE
- Development Mode: Direct app execution
- Single Instance: Prevents multiple app instances
Usage Examples
# Development (runs app directly)
npm run build:electron:dev
# Production AppImage
npm run build:electron:appimage:prod
# Production DMG
npm run build:electron:dmg:prod
Output
- Development: App runs directly (no files created)
- Packages: Executables in
electron/dist/
directory- AppImage:
TimeSafari-1.0.3-beta.AppImage
- DEB:
TimeSafari_1.0.3-beta_amd64.deb
- DMG:
TimeSafari-1.0.3-beta.dmg
- EXE:
TimeSafari Setup 1.0.3-beta.exe
- AppImage:
Documentation: Electron Build Scripts Guide
Environment Management
Environment Variables
All build systems use consistent environment variable patterns:
# Platform identification
VITE_PLATFORM=web|capacitor|electron
# PWA configuration
PWA: automatically enabled for web platforms
# Build information
VITE_GIT_HASH=<git-commit-hash>
DEBUG_MIGRATIONS=0|1
Environment Files
.env.development # Development environment
.env.test # Testing environment
.env.production # Production environment
Mode-Specific Configuration
Each build mode loads appropriate environment configuration:
- Development: Local development settings
- Test: Testing environment with test APIs
- Production: Production environment with live APIs
Package.json Integration
Script Organization
All build scripts are integrated into package.json
with consistent naming:
{
"scripts": {
// Web builds
"build:web": "./scripts/build-web.sh",
"build:web:dev": "./scripts/build-web.sh --dev",
"build:web:test": "./scripts/build-web.sh --test",
"build:web:prod": "./scripts/build-web.sh --prod",
// Android builds
"build:android": "./scripts/build-android.sh",
"build:android:dev": "./scripts/build-android.sh --dev",
"build:android:test": "./scripts/build-android.sh --test",
"build:android:prod": "./scripts/build-android.sh --prod",
// iOS builds
"build:ios": "./scripts/build-ios.sh",
"build:ios:dev": "./scripts/build-ios.sh --dev",
"build:ios:test": "./scripts/build-ios.sh --test",
"build:ios:prod": "./scripts/build-ios.sh --prod",
// Electron builds
"build:electron:dev": "./scripts/build-electron.sh --dev",
"build:electron:test": "./scripts/build-electron.sh --test",
"build:electron:prod": "./scripts/build-electron.sh --prod"
}
}
Legacy Compatibility
Legacy scripts are maintained as aliases for backward compatibility:
{
"scripts": {
// Legacy Android scripts (aliases)
"build:capacitor:android": "npm run build:android",
"build:capacitor:android:dev": "npm run build:android:dev",
"build:capacitor:android:test": "npm run build:android:test",
"build:capacitor:android:prod": "npm run build:android:prod"
}
}
Build Artifacts
Common Artifacts
All build systems generate consistent artifacts:
dist/ # Web build output
├── index.html # Main HTML file
├── assets/ # Compiled assets
├── manifest.webmanifest # PWA manifest
└── sw.js # Service worker
android/app/build/ # Android build output
├── outputs/apk/debug/ # Debug APKs
├── outputs/apk/release/ # Release APKs
└── outputs/bundle/release/ # AAB bundles
ios/App/build/ # iOS build output
├── Debug-iphonesimulator/ # Debug builds
└── Release-iphoneos/ # Release builds
electron/dist/ # Electron packages
├── *.AppImage # Linux AppImages
├── *.deb # Linux DEB packages
├── *.dmg # macOS DMG packages
└── *.exe # Windows installers
Asset Generation
All platforms generate platform-specific assets:
# Icons and splash screens
npx capacitor-assets generate --android
npx capacitor-assets generate --ios
# PWA assets
npx vite build --config vite.config.web.mts
Development Workflow
Daily Development
# Web development
npm run build:web:dev # Starts dev server
# Android development
npm run build:android:dev # Builds debug APK
npm run build:android:deploy # Deploy to device
# Electron development
npm run build:electron:dev # Runs app directly
Testing Workflow
# Test all platforms
npm run build:web:test
npm run build:android:test
npm run build:ios:test
npm run build:electron:test
Production Workflow
# Build all platforms for production
npm run build:web:prod
npm run build:android:prod
npm run build:ios:prod
npm run build:electron:prod
# Create distribution packages
npm run build:electron:appimage:prod
npm run build:electron:dmg:prod
npm run build:electron:deb:prod
Troubleshooting
Common Issues
Build Failures
# Clean all build artifacts
npm run clean:all
# Rebuild from scratch
npm run build:<platform>:dev
Device Connection Issues
# Check Android device connection
adb devices
# Check iOS device connection
xcrun devicectl list devices
Environment Issues
# Verify environment variables
echo $VITE_PLATFORM
echo "PWA: automatically enabled for web platforms"
# Check environment files
ls -la .env*
Debug Mode
Enable verbose logging for all build scripts:
# Verbose mode
./scripts/build-<platform>.sh --verbose
# Debug environment
DEBUG_MIGRATIONS=1 npm run build:<platform>:dev
Performance Metrics
Build Times (Typical)
Platform | Development | Production | Package |
---|---|---|---|
Web | 350ms | 8s | 12s |
Android | 45s | 60s | 75s |
iOS | 60s | 90s | 120s |
Electron | 15s | 25s | 45s |
Optimization Features
- Incremental Builds: Only rebuild changed files
- Parallel Processing: Multi-core build optimization
- Caching: Build artifact caching
- Asset Optimization: Image and code minification
Security Considerations
Build Security
- Environment Isolation: Separate dev/test/prod environments
- Secret Management: Secure handling of API keys
- Code Signing: Digital signatures for packages
- Dependency Scanning: Regular security audits
Distribution Security
- Package Verification: Checksum validation
- Code Signing: Digital certificates for packages
- Update Security: Secure update mechanisms
- Sandboxing: Platform-specific security isolation
Future Enhancements
Planned Improvements
- CI/CD Integration: Automated build pipelines
- Cross-Platform Testing: Unified test framework
- Performance Monitoring: Build performance tracking
- Asset Optimization: Advanced image and code optimization
Platform Expansion
- Windows Store: Microsoft Store packages
- Mac App Store: App Store distribution
- Google Play: Play Store optimization
- App Store: iOS App Store distribution
Last Updated: 2025-07-11 Version: 1.0.3-beta Status: Production Ready