Shoebox is a macOS SwiftUI photo browser with a WidgetKit extension. Built with Xcode (Shoebox.xcodeproj), no SPM or CocoaPods dependencies.
- Models are plain structs (
PhotoItem,PhotoCollection).PhotoCollectionisCodable. - Services are
ObservableObjectclasses or Swift actors (CollectionManager,PhotoLoader,ThumbnailCache,SmartCropper). - Views are SwiftUI. Avoid UIKit/AppKit unless necessary.
- Shared/ contains code imported by both the app and widget targets. Keep shared utilities there.
- Image format support is defined once in
ShoeboxKit.imageExtensions. - Collections persist as JSON in shared
UserDefaultsvia App Group. - Folder access uses security-scoped bookmarks for sandbox compatibility.
- The widget reads pre-exported thumbnails from the App Group container; it does not access user folders directly.