Add comprehensive build scripts and Vite config documentation to BUILDING.md
- Add Appendix A: Build Scripts Reference with detailed documentation for all build scripts
- Add Appendix B: Vite Configuration Files Reference covering all Vite configs
- Add Appendix C: Build Script Integration explaining how components work together
- Document usage examples, exit codes, environment variables, and platform-specific considerations
- Provide complete reference for developers working with the multi-platform build system
@ -88,6 +90,7 @@ All web build commands use the `./scripts/build-web.sh` script, which provides:
- **Local Serving**: Built-in HTTP server for testing builds
- **Local Serving**: Built-in HTTP server for testing builds
**Direct Script Usage:**
**Direct Script Usage:**
```bash
```bash
# Direct script usage (no npm chaining)
# Direct script usage (no npm chaining)
./scripts/build-web.sh # Development build
./scripts/build-web.sh # Development build
@ -325,17 +328,20 @@ npm run build:electron:dmg:prod
### Single Instance Enforcement
### Single Instance Enforcement
The Electron app enforces single-instance operation to prevent:
The Electron app enforces single-instance operation to prevent:
- Database corruption from multiple instances
- Database corruption from multiple instances
- Resource conflicts and performance issues
- Resource conflicts and performance issues
- User confusion from multiple windows
- User confusion from multiple windows
**Behavior:**
**Behavior:**
- Only one instance can run at a time
- Only one instance can run at a time
- Attempting to launch a second instance shows a user-friendly dialog
- Attempting to launch a second instance shows a user-friendly dialog
- The existing window is focused and restored if minimized
- The existing window is focused and restored if minimized
- Second instance exits gracefully
- Second instance exits gracefully
**Implementation:**
**Implementation:**
- Uses Electron's `requestSingleInstanceLock()` API
- Uses Electron's `requestSingleInstanceLock()` API
- Handles `second-instance` events to focus existing window
- Handles `second-instance` events to focus existing window
- Shows informative dialog explaining why only one instance is allowed
- Shows informative dialog explaining why only one instance is allowed
@ -362,21 +368,25 @@ The Electron build process follows a multi-stage approach:
```
```
**Stage 1: Web Build**
**Stage 1: Web Build**
- Vite builds web assets with Electron-specific configuration
- Vite builds web assets with Electron-specific configuration
- Environment variables loaded based on build mode
- Environment variables loaded based on build mode
- Assets optimized for desktop application
- Assets optimized for desktop application
**Stage 2: Capacitor Sync**
**Stage 2: Capacitor Sync**
- Copies web assets to Electron app directory
- Copies web assets to Electron app directory
- Syncs Capacitor configuration and plugins
- Syncs Capacitor configuration and plugins
- Prepares native module bindings
- Prepares native module bindings
**Stage 3: TypeScript Compile**
**Stage 3: TypeScript Compile**
- Compiles Electron main process TypeScript
- Compiles Electron main process TypeScript
- Rebuilds native modules for target platform
- Rebuilds native modules for target platform
- Generates production-ready JavaScript
- Generates production-ready JavaScript
**Stage 4: Package Creation**
**Stage 4: Package Creation**
- Creates platform-specific installers
- Creates platform-specific installers
- Generates distribution packages
- Generates distribution packages
- Signs applications (when configured)
- Signs applications (when configured)
@ -388,6 +398,7 @@ The Electron build process follows a multi-stage approach:
**Purpose**: Local development and testing
**Purpose**: Local development and testing
**Command**: `npm run build:electron:dev`
**Command**: `npm run build:electron:dev`
**Features**:
**Features**:
- Hot reload enabled
- Hot reload enabled
- Debug tools available
- Debug tools available
- Development logging
- Development logging
@ -398,6 +409,7 @@ The Electron build process follows a multi-stage approach:
**Purpose**: Staging and testing environments
**Purpose**: Staging and testing environments
**Command**: `npm run build:electron -- --mode test`
**Command**: `npm run build:electron -- --mode test`
**Features**:
**Features**:
- Test API endpoints
- Test API endpoints
- Staging configurations
- Staging configurations
- Optimized for testing
- Optimized for testing
@ -408,6 +420,7 @@ The Electron build process follows a multi-stage approach:
**Purpose**: Production deployment
**Purpose**: Production deployment
**Command**: `npm run build:electron -- --mode production`
**Command**: `npm run build:electron -- --mode production`
**Features**:
**Features**:
- Production optimizations
- Production optimizations
- Code minification
- Code minification
- Security hardening
- Security hardening
@ -1454,3 +1467,633 @@ electron/
- Service worker injection
- Service worker injection
This architecture ensures consistent builds across all platforms while providing flexibility for platform-specific optimizations and manual quality assurance steps.
This architecture ensures consistent builds across all platforms while providing flexibility for platform-specific optimizations and manual quality assurance steps.
---
## Appendix A: Build Scripts Reference
This appendix provides detailed documentation for all build scripts in the `scripts/` directory.
### A.1 build-web.sh
**File**: `scripts/build-web.sh`
**Author**: Matthew Raymer
**Description**: Web build script for TimeSafari application
**Purpose**: Handles the complete web build process including cleanup, environment setup, Vite build, and optional Docker containerization.
**Usage**:
```bash
# Direct script usage
./scripts/build-web.sh # Development build
./scripts/build-web.sh --dev # Development build (explicit)
./scripts/build-web.sh --test # Test environment build
./scripts/build-web.sh --prod # Production environment build
./scripts/build-web.sh --docker # Build with Docker containerization
./scripts/build-web.sh --docker:test # Test environment + Docker
./scripts/build-web.sh --docker:prod # Production environment + Docker
./scripts/build-web.sh --serve # Build and serve locally
**Note**: This documentation is maintained alongside the build system. For the most up-to-date information, refer to the actual script files and Vite configuration files in the repository.