An iOS app that captures photos from your iPhone's camera and uploads them to a configurable HTTP endpoint. Perfect for automated photo capture workflows, time-lapse photography with remote storage, and webhook-based photo integrations.
- Configure HTTP verb (GET, POST, PUT, PATCH, DELETE), URL, and optional note
- Reuse previously configured endpoints from a picker
- Live camera preview with real-time feed
- One-tap photo capture and upload
- Photos uploaded as multipart/form-data file attachments
- Front and back camera support
- Switch between Wide, Ultra Wide, and Telephoto lenses when available
- Automatic camera detection
- Automated photo capture at configurable intervals
- Supports seconds, minutes, hours, or days
- Live thumbnail preview of latest captured photo
- Upload status tracking with success/failure counts
- Upload history sheet showing last 100 attempts with full request/response details
- Detailed success/failure reporting
- Full HTTP request and response details for debugging
- Persistent configuration storage across app launches
- iOS 17.0+
- Xcode 26.1+ (with Swift 6) for building
make buildmake testUnit tests verify ConfigStore, TimerConfig, UploadService, and UploadHistory functionality.
make ui-testUI tests launch the app through the automation runner. They require an interactive session and camera permission.
make quality- Open
camera2url.xcodeprojin Xcode - Select the
camera2urlscheme - Select an iOS Simulator or device
- Press ⌘B to build or ⌘R to run
- Press ⌘U to run all tests
camera2url/
├── Models/
│ ├── RequestConfig.swift # HTTP verb, URL, note configuration
│ ├── UploadModels.swift # Upload result types
│ ├── TimerConfig.swift # Timer interval configuration
│ └── UploadRecord.swift # Upload history tracking
├── Services/
│ ├── CameraService.swift # AVFoundation camera handling
│ └── UploadService.swift # HTTP multipart upload
├── Stores/
│ └── ConfigStore.swift # UserDefaults persistence
├── ViewModels/
│ └── AppViewModel.swift # Main app state coordination
├── Views/
│ ├── CameraPreviewView.swift # UIViewRepresentable camera preview
│ ├── ConfigView.swift # Configuration sheet
│ └── UploadHistoryView.swift # Upload history sheet
├── ContentView.swift # Main app view
└── camera2urlApp.swift # App entry point
The app requires the following permissions:
- Camera access (
NSCameraUsageDescription) - to capture photos - Network access - to upload photos to configured endpoints
Copyright © 2025 Manuel Kießling. All rights reserved.