# AI_Implementation.md ## How This App Was Architected & Built This project was developed following strict senior-level iOS engineering standards, with guidance from an AI assistant (Grok) acting as a Senior iOS Engineer specializing in SwiftUI and modern Apple frameworks. ### Guiding Principles (from AGENTS.md) - **Protocol-Oriented Programming (POP) first**: All shared capabilities defined via protocols before concrete types - **MVVM-lite**: Views are "dumb" — all logic lives in `@Observable` view models - **No third-party dependencies**: Pure Apple frameworks only (SwiftUI, AVFoundation, StoreKit 2, CoreImage) - **No magic numbers**: All dimensions, opacities, durations from centralized `Design` constants - **Full accessibility**: Dynamic Type, VoiceOver labels/hints/traits/announcements - **Modern Swift & SwiftUI**: Swift 6 concurrency, `@MainActor`, `foregroundStyle`, `clipShape(.rect)`, `NavigationStack` - **Testable & reusable design**: Protocols enable mocking and future SPM package extraction ### Architecture Overview Shared/ ├── DesignConstants.swift → Semantic design tokens (spacing, radii, sizes, etc.) ├── Color+Extensions.swift → Ring light color presets ├── Protocols/ │ ├── RingLightConfigurable.swift → Border, color, brightness, mirror, smoothing │ ├── CaptureControlling.swift → Timer, grid, zoom, capture mode │ └── PremiumManaging.swift → Subscription state & purchase handling └── Premium/ └── PremiumManager.swift → Native StoreKit 2 implementation Features/ ├── Camera/ → Main UI, preview, capture logic ├── Settings/ → Configuration screens └── Paywall/ → Pro subscription flow ### Key Implementation Decisions 1. **Ring Light Effect** - Achieved by coloring the safe area background and leaving a centered rectangular window for camera preview - Border width controlled via user setting - Gradient support added for directional "portrait lighting" 2. **Camera System** - `AVCaptureSession` with front camera default - `UIViewRepresentable` wrapper for preview with pinch-to-zoom - Video data output delegate for future real-time filters (skin smoothing placeholder) 3. **Capture Enhancements** - Timer with async countdown and accessibility announcements - Volume button observation via KVO on `AVAudioSession.outputVolume` - Flash burst: temporarily sets brightness to 1.0 on capture 4. **Freemium Model** - Built with pure StoreKit 2 (no RevenueCat) - `PremiumManaging` protocol enables easy testing/mocking - Clean paywall with benefit list and native purchase flow 5. **Reusability Focus** - All shared logic extracted to protocols - Ready for future extraction into SPM packages: - `SelfieCameraKit` - `SelfieRingLightKit` - `SelfiePremiumKit` ### Development Process - Iterative feature additions guided by competitive analysis of top App Store selfie apps - Each new capability (timer, boomerang, gradient, subscriptions) added with protocol-first design - Strict adherence to no magic numbers, full accessibility, and clean separation - Final structure optimized for maintainability and future library extraction This app demonstrates production-quality SwiftUI architecture while delivering a delightful, competitive user experience.