SwiftUI + UIKit Hybrid
Modern declarative UI with complex camera integration
Metal GPU Framework
Real-time light painting effects and rendering
AVFoundation
Professional camera capture and video processing
Core Data
Local persistence with migration support
Core Image
Advanced image processing pipeline
AppIntents
Siri integration for voice control
Primary design pattern for clean separation of concerns:
EasyViewModel - Main app stateTimelapseCameraViewModel - Camera sessionTimelapseListViewModel - Media organizationSharedObjectsController - ResourcesCore singletons for shared resources:
CoreDataManager.sharedDatabase persistence
SharedMetalCIContext.sharedGPU rendering context
OrientationManager.sharedDevice orientation
TaskManager.sharedBackground processing
Camera Input → Metal Texture Cache → Frame Blending Engine → Light Trail Composition → Display/Export
Device and pipeline management
Optimized Core Image context
Real-time light trail blending
enum BlendMode: String, CaseIterable {
case additive = "additiveBlendFragment"
case screen = "screenBlendFragment"
case lighten = "lightenBlendFragment"
case starTrail = "starTrailBlendFragment"
case steelWool = "steelWoolBlendFragment"
}@MainActor class AppSettings: ObservableObject {
@AppStorage("selectedTheme") var selectedTheme: String = "dark"
@AppStorage("enableMetalAcceleration") var enableMetalAcceleration: Bool = true
@AppStorage("lightThreshold") var lightThreshold: Float = 0.5
@AppStorage("trailFadeAmount") var trailFadeAmount: Float = 0.002
}class TaskManager {
private let maxConcurrentTasks: Int = 8
private let semaphore: DispatchSemaphore
private let queue: DispatchQueue // .utility QoS
}timelapseRender - Video compositionimageStackRender - Light trail processingimportFiles - Media import operationscreateOptimizedFiles - Asset optimizationclass OrientationManager: ObservableObject {
@Published var isPortraitUpsideDown: Bool = false
@Published var rotationAngle: Double = 0.0
private var isOrientationLocked: Bool
}-Onone for debugging