PRODUCT
App
Navigation
PhotoMeterProApp → ProIntroLaunchRoot (3.6s intro) → onboarding gate → MainUI with four tabs:
- Camera — CameraSelectionView: brand/series/model picker, typeahead, active camera
- Lens — LensSelectionView: search, mount compatibility, lens alternatives, optional AI description/tags (Pro)
- Meter — MeterView: live preview, EV, histogram, waveform mini, ISO/shutter/aperture, ND/CPL filters, flash metering
- Settings — SettingsView: hub linking to ~30 Pro screens, AI advisors, and metering modes
Architecture
Singleton engines injected as @EnvironmentObject plus ViewModels per screen. Key engines: SceneCaptureEngine, MeterIntegrationEngine, MonetizationEngine, PMPAIService, SyncEngine, AIOrchestratorEngine.
Persistence
- SwiftData local: CameraBody, Lens, Filter, UserProfile (cloudKitDatabase: none)
- Manual CloudKit sync via SyncEngine to iCloud.com.tine.photometerpro
- Presets, History, MeterCalibrationStore, SettingsCenterEngine (UserDefaults)
Integrations
- AVFoundation — camera capture and metering
- CoreBluetooth — BLE camera output
- CloudKit — gear/profile sync (Pro)
- StoreKit 2 — Pro entitlement
- WatchConnectivity — Apple Watch companion
- HTTP to Cloudflare Worker — all AI advisors