# Time Safari Platforms — Platform-Specific Considerations

> **Agent role**: Reference this file for platform-specific details when working
  with TimeSafari development across different platforms.

## Platform-Specific Considerations

### Web (PWA)

- **QR Scanning**: WebInlineQRScanner

- **Deep Linking**: URL parameters

- **File System**: Limited browser APIs

- **Build**: `npm run build:web` (development build)

### Mobile (Capacitor)

- **QR Scanning**: @capacitor-mlkit/barcode-scanning

- **Deep Linking**: App URL open events

- **File System**: Capacitor Filesystem

- **Build**: `npm run build:capacitor`

### Desktop (Electron)

- **File System**: Node.js fs

- **Build**: `npm run build:electron`

- **Distribution**: AppImage, DEB, DMG packages

## Platform Compatibility Requirements

### Cross-Platform Features

- **Core functionality** must work identically across all platforms

- **Platform-specific enhancements** should be additive, not required

- **Fallback behavior** must be graceful when platform features unavailable

### Platform-Specific Capabilities

- **Web**: Browser APIs, PWA features, responsive design

- **Mobile**: Native device features, offline capability, app store compliance

- **Desktop**: File system access, system integration, native performance

## Build and Distribution

### Build Commands

```bash

# Web (development)

npm run build:web

# Mobile

npm run build:capacitor
npm run build:native

# Desktop

npm run build:electron
npm run build:electron:appimage
npm run build:electron:deb
npm run build:electron:dmg

```

### Testing Commands

```bash

# Web E2E

npm run test:web

# Mobile

npm run test:mobile
npm run test:android
npm run test:ios

# Type checking

npm run type-check
npm run lint-fix

```

## Key Constraints

1. **Privacy First**: User identifiers remain private except when explicitly

   shared

2. **Platform Compatibility**: Features must work across all target platforms

3. **Performance**: Must remain performant on older/simpler devices

4. **Modern Architecture**: New features should use current platform services

5. **Offline Capability**: Key functionality should work offline when feasible

## Use Cases to Support

1. **Community Building**: Tools for finding others with shared interests

2. **Project Coordination**: Easy proposal and collaboration on projects

3. **Reputation Building**: Showcasing contributions and reliability

4. **Governance**: Facilitating decision-making and collective governance

## Resources

- **Testing**: `docs/migration-testing/`

- **Architecture**: `docs/architecture-decisions.md`

- **Build Context**: `docs/build-modernization-context.md`

---

**See also**:

- `.cursor/rules/app/timesafari.mdc` for core application context
- `.cursor/rules/app/timesafari_development.mdc` for

  development workflow details

**Status**: Active platform guidelines
**Priority**: High
**Estimated Effort**: Ongoing reference
**Dependencies**: timesafari.mdc
**Stakeholders**: Development team, Platform teams

## Model Implementation Checklist

### Before Platform Development

- [ ] **Platform Analysis**: Identify all target platforms (web, mobile, desktop)
- [ ] **Feature Requirements**: Understand feature requirements across platforms
- [ ] **Platform Constraints**: Review platform-specific limitations and capabilities
- [ ] **Testing Strategy**: Plan testing approach for all target platforms

### During Platform Development

- [ ] **Cross-Platform Implementation**: Implement features across all platforms
- [ ] **Platform Services**: Use current platform services for new features
- [ ] **Performance Optimization**: Ensure performance on older/simpler devices
- [ ] **Offline Capability**: Implement offline functionality where feasible

### After Platform Development

- [ ] **Cross-Platform Testing**: Test functionality across all target platforms
- [ ] **Performance Validation**: Verify performance meets requirements
- [ ] **Documentation Update**: Update platform-specific documentation
- [ ] **Team Communication**: Share platform implementation results with team
