# Camera Platform-Specific Implementation

> **Agent role**:
  Reference this file for platform-specific camera implementation details.

## Web Platform

### Implementation Details

- Uses `getUserMedia` API for camera access

- Implements fallback to file input if camera unavailable

- Handles browser compatibility issues

- Requires HTTPS for camera access

### Browser Support

- Chrome: Full support

- Firefox: Full support

- Safari: Limited support

- Edge: Full support

### Fallback Mechanisms

1. Camera access via getUserMedia

2. File input for image upload

3. Drag and drop support

4. Clipboard paste support

## Mobile Platform (Capacitor)

### iOS Implementation

- Uses `@capacitor-mlkit/barcode-scanning`

- Implements proper permission handling

- Supports both front and back cameras

- Handles camera switching

### Android Implementation

- Uses `@capacitor-mlkit/barcode-scanning`

- Implements proper permission handling

- Supports both front and back cameras

- Handles camera switching

### Permission Handling

- Camera permissions requested at runtime

- Permission state tracked and cached

- Graceful handling of denied permissions

- Clear user guidance for enabling permissions

## Desktop Platform (Electron)

### Current Status

- Camera implementation pending

- Will use platform-specific APIs

- Requires proper permission handling

- Will support both built-in and external cameras

### Planned Implementation

- Native camera access via Electron

- Platform-specific camera APIs

- Proper permission handling

- Camera switching support

## Platform Detection

### Implementation

- Uses `PlatformServiceFactory` for platform detection

- Implements platform-specific camera services

- Handles platform-specific error conditions

- Provides platform-specific user guidance

### Service Selection

- Web: `WebPlatformService`

- Mobile: `CapacitorPlatformService`

- Desktop: `ElectronPlatformService`

## Cross-Platform Compatibility

### Common Interface

- Unified camera service interface

- Platform-specific implementations

- Consistent error handling

- Unified user experience

### Feature Parity

- Core camera functionality across platforms

- Platform-specific optimizations

- Consistent user interface

- Unified error messages

## Platform-Specific Features

### Web

- Browser-based camera access

- File upload fallback

- Drag and drop support

- Clipboard paste support

### Mobile

- Native camera access

- Barcode scanning

- Photo capture

- Camera switching

### Desktop

- Native camera access (planned)

- External camera support (planned)

- Advanced camera controls (planned)

## Testing Strategy

### Platform Coverage

- Web: Multiple browsers

- Mobile: iOS and Android devices

- Desktop: Windows, macOS, Linux

### Test Scenarios

- Permission handling

- Camera access

- Error conditions

- Platform compatibility

- Performance metrics

---

**See also**:

- `.cursor/rules/features/camera-implementation.mdc` for

  core implementation overview

- `.cursor/rules/features/camera_technical.mdc` for

  technical implementation details

**Status**: Active platform-specific implementation guide
**Priority**: Medium
**Estimated Effort**: Ongoing reference
**Dependencies**: camera-implementation.mdc
**Stakeholders**: Development team, Platform team

## Model Implementation Checklist

### Before Camera Platform Implementation

- [ ] **Platform Analysis**: Identify target platforms and their camera capabilities
- [ ] **Feature Planning**: Plan platform-specific camera features
- [ ] **Integration Planning**: Plan integration with existing camera systems
- [ ] **Testing Strategy**: Plan testing across all target platforms

### During Camera Platform Implementation

- [ ] **Platform Services**: Implement platform-specific camera functionality
- [ ] **Feature Development**: Implement planned camera features for each platform
- [ ] **Integration**: Integrate with existing camera infrastructure
- [ ] **Performance Optimization**: Optimize camera performance for each platform

### After Camera Platform Implementation

- [ ] **Cross-Platform Testing**: Test camera functionality across all platforms
- [ ] **Feature Validation**: Verify all planned features work correctly
- [ ] **Performance Testing**: Ensure camera performance meets requirements
- [ ] **Documentation Update**: Update platform-specific camera documentation
