# Camera Implementation Documentation ## Overview This document describes how camera functionality is implemented across the TimeSafari application. The application uses cameras for two main purposes: 1. QR Code scanning 2. Photo capture ## Components ### QRScannerDialog.vue Primary component for QR code scanning in web browsers. **Key Features:** - Uses `qrcode-stream` for web-based QR scanning - Supports both front and back cameras - Provides real-time camera status feedback - Implements error handling with user-friendly messages - Includes camera switching functionality **Camera Access Flow:** 1. Checks for camera API availability 2. Enumerates available video devices 3. Requests camera permissions 4. Initializes camera stream with preferred settings 5. Handles various error conditions with specific messages ### PhotoDialog.vue Component for photo capture and selection. **Key Features:** - Cross-platform photo capture interface - Image cropping capabilities - File selection fallback - Unified interface for different platforms ## Services ### QRScanner Services #### WebDialogQRScanner Web-based implementation of QR scanning. **Key Methods:** - `checkPermissions()`: Verifies camera permission status - `requestPermissions()`: Requests camera access - `isSupported()`: Checks for camera API support - Handles various error conditions with specific messages #### CapacitorQRScanner Native implementation using Capacitor's MLKit. **Key Features:** - Uses `@capacitor-mlkit/barcode-scanning` - Supports both front and back cameras - Implements permission management - Provides continuous scanning capability ### Platform Services #### WebPlatformService Web-specific implementation of platform features. **Camera Capabilities:** - Uses HTML5 file input with capture attribute - Falls back to file selection if camera unavailable - Processes captured images for consistent format #### CapacitorPlatformService Native implementation using Capacitor. **Camera Features:** - Uses `Camera.getPhoto()` for native camera access - Supports image editing - Configures high-quality image capture - Handles base64 image processing #### ElectronPlatformService Desktop implementation (currently unimplemented). --- **See also**: - `.cursor/rules/features/camera_technical.mdc` for detailed technical implementation - `.cursor/rules/features/camera_platforms.mdc` for platform-specific details **Status**: Active camera implementation overview **Priority**: Medium **Estimated Effort**: Ongoing reference **Dependencies**: None **Stakeholders**: Development team, Camera feature team - iOS and Android devices - Desktop platforms - Various network conditions ## Model Implementation Checklist ### Before Camera Implementation - [ ] **Platform Analysis**: Understand camera requirements across all platforms - [ ] **Feature Planning**: Plan QR scanning and photo capture features - [ ] **Service Planning**: Plan camera service architecture - [ ] **Testing Strategy**: Plan testing across web, mobile, and desktop ### During Camera Implementation - [ ] **Component Development**: Implement QRScannerDialog and PhotoDialog - [ ] **Service Implementation**: Implement platform-specific camera services - [ ] **Permission Handling**: Implement proper camera permission management - [ ] **Error Handling**: Implement graceful error handling for camera failures ### After Camera Implementation - [ ] **Cross-Platform Testing**: Test camera functionality across all platforms - [ ] **Feature Validation**: Verify QR scanning and photo capture work correctly - [ ] **Performance Testing**: Ensure camera performance meets requirements - [ ] **Documentation Update**: Update camera implementation documentation