YPImagePicker is an iOS framework that provides an Instagram-like photo and video picker with a rich set of features including camera capture, library browsing, video trimming, photo filters, cropping, and multiple selection. The architecture follows a modular pattern with a central configuration struct (YPImagePickerConfiguration) that controls all behaviors, and a navigation controller (YPImagePicker) that manages a paged interface (YPPickerVC) switching between library, photo, and video screens. The library screen uses PHPhotoLibrary and PHCachingImageManager for asset fetching and caching, while the camera and video screens leverage AVFoundation for capture. Filters are applied via Core Image, and video trimming uses the PryntTrimmerView dependency. The framework is highly customizable through configuration properties for colors, fonts, icons, wordings, and feature toggles. The codebase is well-organized into folders for configuration, filters, helpers, models, pages (gallery, photo, video), and selections gallery. Helper extensions provide reusable functionality for AVFoundation, Photos, UIKit, and Core Image operations. The permission management is abstracted into a dedicated module. While the framework lacks unit tests and some view controllers are large, the overall structure is clean and the separation of concerns is reasonable. The library has been widely adopted (4.4k stars) and is actively maintained with recent commits and pinned dependencies.
photoscrawl is a macOS CLI tool that crawls, archives, and analyzes Apple Photos libraries. It extracts metadata, faces, search indexes, and performs classification using local multimodal models (Ollama/OpenAI). The tool stores observations and evidence in a local SQLite database (photos.sqlite) rather than final truth, enabling later hypothesis generation for people, trips, and places. It provides subcommands for crawling, importing, classifying, searching, ranking, similarity, place backfill, and evaluation card generation. Architecture: The system is a Go CLI with a modular internal structure. It uses a crawlkit shared library for crawler mechanics, control, output, and store. The Apple Photos library is accessed via PhotoKit (cgo/Objective-C bridges) and direct SQLite snapshots. Data flows: snapshot Apple Photos database -> import metadata, faces, search indexes -> classify assets (metadata observations, then optional local model inference) -> store evidence in archive. Place backfill uses a subprocess bridge for reverse geocoding with rate limiting. Eval cards prepare images and run Ollama models for evaluation. Key entry points: cmd/photoscrawl/main.go (CLI), internal/archive/crawl.go (crawl logic), internal/archive/classify.go (classification queue), internal/place/backfill.go (batch geocoding), internal/evalcard/evalcard.go (model evaluation). External dependencies: Apple Photos (macOS), SQLite, Ollama/OpenAI (optional), crawlkit, Go standard library. The codebase demonstrates strong engineering practices with comprehensive tests, CI/CD, vulnerability scanning, and schema migrations. It is actively maintained with frequent dependency updates and a focus on privacy (all model calls local by default, no private data in repo).
This repository is a React Native library that provides platform-specific camera and image/video picker functionality. It exposes two primary functions: `launchCamera` and `launchImageLibrary`, which allow users to capture photos/videos or select existing media from the device library. The implementation covers iOS (using UIImagePickerController and PHPickerViewController), Android (via Intents and the AndroidX Photo Picker), and a minimal web fallback using browser APIs. The library handles image resizing, metadata extraction, video conversion, permission handling, and offers configurable options like quality, media type, selection limits, and more. The codebase follows standard React Native native module patterns with support for both the old and new architecture (TurboModules). While the implementation is functional and well-tested by the community, it includes some code that could be considered dated (e.g., synchronous dispatch semaphore on iOS, inline DOM manipulation on web) and does not contain easily extractable reusable components outside its specific domain.