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