A native macOS app for organizing photo transfers from a church photography team to centralized network storage.
- 3-step guided workflow — enter event info, transfer files, review results
- Drag-and-drop — drop photos and folders directly into the app
- Smart organization — creates
Event / Date / Photographerfolder hierarchy automatically - Duplicate handling — detects filename collisions and organizes into numbered upload folders
- Autocomplete — remembers past event names and photographer names
- Date picker — calendar dropdown pre-filled with today's date
- Multiple photographers — reuses existing event/date folders for the same event
- Progress tracking — real-time file count, byte totals, and current file display
- Dark mode — designed with a dark interface using Northwoods brand colors
- macOS 14 (Sonoma) or later
- Apple Silicon (aarch64)
- Download the latest
.zipfrom Releases - Extract the zip file
- Move Photo Ingest.app to your Applications folder (optional)
- Right-click the app and select Open (required on first launch for ad-hoc signed apps)
- Open Settings (Cmd+,) and choose a destination folder — this is where all photos will be organized
- Fill in the event details:
- Event name (e.g., "Sunday Service", "Easter")
- Photographer name
- Date (defaults to today)
- Drop photos and folders into the drop zone
- Click Start Transfer — files are copied to:
[Destination]/[Event]/[YYYY-MM-DD]/[Photographer]/ - Review the summary and click Ingest More Photos for the next batch
Multiple photographers can ingest for the same event — the app reuses existing event and date folders.
Requires XcodeGen and Xcode 16+.
# Generate Xcode project
xcodegen generate
# Build
xcodebuild -project PhotoIngest.xcodeproj -scheme PhotoIngest -configuration Release build
# Ad-hoc sign
codesign --force --deep --sign - "build/Build/Products/Release/Photo Ingest.app"Photo Ingest/
project.yml # XcodeGen project specification
PhotoIngest/
App/
PhotoIngestApp.swift # App entry point and window configuration
AppState.swift # Central observable state manager
Models/
TransferItem.swift # File queued for transfer
TransferResult.swift # Transfer outcome and progress tracking
Services/
TransferService.swift # File copy engine with collision detection
HistoryService.swift # UserDefaults persistence for autocomplete
Views/
ContentView.swift # Wizard step router
Step1EventInfoView.swift # Event info form and drop zone
Step2TransferProgressView.swift # Transfer progress display
Step3CompleteView.swift # Completion summary
SettingsView.swift # Destination folder picker
Theme.swift # Brand colors and design tokens
Components/
DropZoneView.swift # Drag-and-drop file target
AutocompleteTextField.swift # Text field with suggestion dropdown
Resources/
Info.plist
PhotoIngest.entitlements
Assets.xcassets/
MIT License — Copyright (c) 2026 Northwoods Community Church
See CREDITS.md for third-party acknowledgments.