How ayhanblt/kloda works
Kloda is a secure photo-backup and device-sync product with desktop and mobile clients. The main workflow is to choose local sources and a schedule, configure a remote destination, run and monitor transfers, then review conflicts or restore backups. Pairing and device management form a separate workflow; photo cataloging and recovery are additional product stages. The excerpts show desktop runtime wiring and selected client entry points, but not most mobile/native transfer implementations, so those connections are omitted or marked unverified.
Main entry points: App.tsx Mobile navigation · use-backup-setup.ts Backup setup model · main.ts Electron entry · runtime.ts Sync runtime
Components 25
Client interfaces
- Desktop navigation
apps/desktop/src/app/App.tsx - Backup setup
apps/desktop/src/pages/backup/BackupSetup.tsx - Backup versions
apps/desktop/src/pages/backups/BackupVersions.tsx - Pairing interface
apps/desktop/src/features/pair-device/useDesktopPairing.ts - Mobile navigation
apps/mobile/src/app/App.tsx - Backup setup model
apps/mobile/src/features/backup-setup/model/use-backup-setup.ts - Pairing controller
apps/mobile/src/features/pairing/model/pairing-controller.ts - WebDAV review
apps/mobile/src/shared/api/webdav-review.ts
Desktop runtime
- Electron entry
apps/desktop/electron/main.ts - Sync runtime
apps/desktop/electron/runtime/runtime.ts - Sync journal
apps/desktop/electron/runtime/journal.ts - Schedule adapter
apps/desktop/electron/runtime/scheduler.ts - Background runtime
apps/desktop/electron/runtime/background.ts - Pairing runtime
apps/desktop/electron/runtime/pairing.ts
Mobile sync
- File transfer service
apps/mobile/modules/my-module/android/src/main/java/com/kloda/sync/AndroidFilesService.kt - Native pairing runtime
apps/mobile/modules/my-module/android/src/main/java/com/kloda/sync/AndroidPairingRuntime.kt
Shared sync logic
- Sync contracts
packages/sync-core/src/contracts.ts - Destination catalog
packages/sync-core/src/destination-catalog.ts - Schedule logic
packages/sync-core/src/schedule.ts
Native transports
- SMB transport
packages/storage-native/src/lib.rs - S3 bridge
packages/s3-native/src/bridge.rs - FTPS transport
packages/ftps-native/src/session.rs - SFTP transport
packages/sftp-native/src/session.rs
Other components
- Desktop user
- Mobile user
Connections 30
- Desktop user → Desktop navigation: uses
apps/desktop/src/app/App.tsx - Desktop navigation → Backup setup: renders
apps/desktop/src/app/App.tsx - Desktop navigation → Backup versions: renders
apps/desktop/src/app/App.tsx - Desktop navigation → Pairing interface: opens
- Electron entry → Sync runtime: creates
apps/desktop/electron/main.ts - Electron entry → Sync journal: creates
apps/desktop/electron/main.ts - Electron entry → Schedule adapter: creates
apps/desktop/electron/main.ts - Electron entry → Pairing runtime: registers
apps/desktop/electron/main.ts - Electron entry → Background runtime: configures
apps/desktop/electron/main.ts - Sync runtime → Sync journal: reads and writes
apps/desktop/electron/runtime/runtime.ts - Sync runtime → Schedule logic: uses
apps/desktop/electron/runtime/runtime.ts - Schedule adapter → Sync journal: reads
apps/desktop/electron/runtime/scheduler.ts - Schedule adapter → Schedule logic: uses
apps/desktop/electron/runtime/scheduler.ts - Background runtime → Sync runtime: starts
apps/desktop/electron/runtime/background.ts - Background runtime → Sync journal: reads
apps/desktop/electron/runtime/background.ts - Backup setup → Sync runtime: calls API
- Backup versions → Sync runtime: calls API
- Desktop user → Electron entry: launches
apps/desktop/electron/main.ts - Mobile user → Mobile navigation: uses
apps/mobile/src/app/App.tsx - Mobile navigation → Backup setup model: uses
apps/mobile/src/app/App.tsx - Mobile navigation → Pairing controller: opens
apps/mobile/src/app/App.tsx - Mobile navigation → WebDAV review: opens
- File transfer service → Native pairing runtime: requests pause
apps/mobile/modules/my-module/android/src/main/java/com/kloda/sync/AndroidFilesService.kt - Backup setup model → Sync contracts: uses
- Mobile navigation → Destination catalog: uses
apps/mobile/src/app/App.tsx - Mobile navigation → Schedule logic: uses
- Backup setup model → SMB transport: may use
- Backup setup model → S3 bridge: may use
- Backup setup model → FTPS transport: may use
- Backup setup model → SFTP transport: may use