Watermelon
iOS Photos Backup App. Supports Backup to External Storage, SMB, WebDAV, S3-Compatible Buckets, and SFTP.
File Explorer
Download Latest Version (.zip)- 01-Architecture.md
- 02-BackupCoreV2.md
- 03-DataModel.md
- 04-UIFlow.md
- 05-OpenIssues.md
- 06-OneDrive.md
- 07-Dropbox.md
- 08-GoogleDrive.md
- DatabaseManager.swift
- Records.swift
- FileProtection.swift
- KeychainService.swift
- AppName.swift
- AppSession.swift
- BackupDomain.swift
- CanonicalProfileConnection.swift
- RemoteFileNamePolicy.swift
- RemoteHealthDigest.swift
- RemoteLibraryDomain.swift
- RemotePathBuilder.swift
- RemoteThumbnailPaths.swift
- ResourceRole.swift
- SMBServerDrafts.swift
- StorageProfile.swift
- ByteCountFormatter+Watermelon.swift
- Data+HexString.swift
- Date+Milliseconds.swift
- LocalizationHelpers.swift
- NotificationName+Watermelon.swift
- BackupAssetResourcePlanner.swift
- BackupCancellationController.swift
- BackupEvent.swift
- BackupEventStream.swift
- BackupScopeModels.swift
- MonthManifestStore+Loading.swift
- MonthManifestStore+Schema.swift
- MonthManifestStore.swift
- RemoteFileNaming.swift
- RemoteIndexSyncService.swift
- RemoteLibrarySnapshotCache.swift
- RemoteMonthResolver.swift
- StorageClientPool.swift
- ExecutionLogEntry.swift
- ExecutionLogFileStore.swift
- ExecutionLogPalette.swift
- ExecutionLogSessionInfo.swift
- ExecutionLogSessionWriter.swift
- LeasedRemoteWriter.swift
- LeftoverFileScanner.swift
- LegacyV1WriteGate.swift
- LiteDataDirectoryProbe.swift
- LiteRepoError.swift
- MultiDeviceMarkerFactory.swift
- OrphanCleanupLite.swift
- RemoteFaultLite.swift
- RemoteMoveIndependenceProbe.swift
- RemoteSqliteValidator.swift
- RepoFormatRouter.swift
- RepoLayoutLite.swift
- RepoLockFile.swift
- RepoWriteMode.swift
- RepoWriteSession.swift
- ThumbnailOrphanScanner.swift
- V1ManifestScanner.swift
- V1ToLiteMigration.swift
- VersionManifestLite.swift
- WatermelonRemoteFormat.swift
- WriteLockService.swift
- AMSMB2Client.swift
- SMBClientProtocol.swift
- SMBSetupService.swift
- DropboxAuthentication.swift
- DropboxClient.swift
- DropboxErrorClassifier.swift
- DropboxModels.swift
- DropboxSharedState.swift
- GoogleDriveAuthentication.swift
- GoogleDriveClient.swift
- GoogleDriveErrorClassifier.swift
- GoogleDriveModels.swift
- GoogleDriveSharedState.swift
- GoogleDriveTransport.swift
- GoogleDriveWriteSession.swift
- HostnameResolver.swift
- LocalVolumeClient.swift
- OneDriveAuthentication.swift
- OneDriveClient.swift
- OneDriveErrorClassifier.swift
- OneDriveGraphModels.swift
- OneDriveGraphTransport.swift
- OneDriveRepoWriteOptimization.swift
- OneDriveSharedState.swift
- RemoteLeasedNamespaceClient.swift
- S3Client.swift
- S3ErrorClassifier.swift
- S3ProfileVerifier.swift
- S3SigV4Signer.swift
- SecurityScopedBookmarkStore.swift
- SFTPClient.swift
- SFTPErrorClassifier.swift
- StorageClientFactory.swift
- URLSessionStallWatchdog.swift
- WebDAVClient.swift
- WebDAVErrorClassifier.swift
- ChangeSignal.swift
- AppCoordinator.swift
- AppDelegate.swift
- AppRuntimeFlags.swift
- DependencyContainer.swift
- NotificationObserverBag.swift
- ProStatus.swift
- RatingPromptService.swift
- SceneDelegate.swift
- BackupNodeIntents.swift
- ConsideringUser.swift
- LibraryPresenceIndex.swift
- LibraryPresenceInputLoader.swift
- LocalMediaLoader.swift
- LocalMediaSource.swift
- MediaActionBar.swift
- MediaBrowserActions.swift
- MediaBrowserConnectionPool.swift
- MediaBrowserGridViewController.swift
- MediaBrowserHeroTransition.swift
- MediaBrowserModels.swift
- MediaBrowserSource.swift
- MediaBrowserViewerViewController.swift
- MediaDropEmptyActionView.swift
- MediaDropFileSelectionController.swift
- MediaDropSelectionPopoverViewController.swift
- MediaMetadata.swift
- MediaMetadataViewController.swift
- MediaPageCell.swift
- MediaPresenceStyle.swift
- MediaThumbnailCache.swift
- MergedMediaSource.swift
- RemoteBrowserAsset.swift
- RemoteMediaSource.swift
- RemoteSnapshotOwnership.swift
- TransferLocalMediaSource.swift
- AsyncSemaphore.swift
- DownloadWorkflowHelper.swift
- DuplicatesViewController.swift
- ExecutionLogEntryCell.swift
- ExecutionLogHistoryViewController.swift
- FocusModeViewController.swift
- HomeAlbumMatching.swift
- HomeCollectionViewCells.swift
- HomeConnectionController.swift
- HomeDataModels.swift
- HomeDataProcessingWorker.swift
- HomeExecutionCoordinator.swift
- HomeExecutionDataRefresher.swift
- HomeExecutionLogViewController.swift
- HomeExecutionSession.swift
- HomeExecutionTerminationBridge.swift
- HomeExecutionTransferFormatter.swift
- HomeFileSizeScanCoordinator.swift
- HomeHeaderSummaryFormatter.swift
- HomeIncrementalDataManager.swift
- HomeLocalIndexEngine.swift
- HomeLocalIndexReloadCoordinator.swift
- HomeLocalLibraryScope.swift
- HomeMenuFactory.swift
- HomeMonthGroupingTimeZoneChangeObserver.swift
- HomePhotoAccessGate.swift
- HomeRefreshScheduler.swift
- HomeRemoteIndexEngine.swift
- HomeScopeController.swift
- HomeScopeNormalizer.swift
- HomeScreenState.swift
- HomeScreenStore.swift
- HomeSectionBuilder.swift
- HomeSelectionController.swift
- HomeViewController.swift
- LocalAlbumGridSupport.swift
- LocalAlbumPickerViewController.swift
- LocalIndexViewController.swift
- OriginalPhotoCache.swift
- PhotoKitChangeProvider.swift
- PhotoLibraryAbstraction.swift
- RemoteNodeOverlayViewController.swift
- RemoteThumbnailService.swift
- SelectionActionPanel.swift
- SelectionActionPanelRenderState.swift
- watermelon.png
- icon.json
- Contents.json
- Contents.json
- Contents.json
- Contents.json
- Contents.json
- dropbox@2x.png
- dropbox@3x.png
- Contents.json
- google-drive@2x.png
- google-drive@3x.png
- Contents.json
- onedrive@2x.png
- onedrive@3x.png
- Contents.json
- Contents.json
- LaunchScreen.storyboard
- LaunchScreen.strings
- LaunchScreen.strings
- LaunchScreen.strings
- LaunchScreen.strings
- LaunchScreen.strings
- LaunchScreen.strings
- LaunchScreen.strings
- LaunchScreen.strings
- LaunchScreen.strings
- LaunchScreen.strings
- LaunchScreen.strings
- LaunchScreen.strings
- complete.wav
- Info.plist
- InfoPlist.xcstrings
- keyboard-typing.mp3
- Localizable.xcstrings
- AssetProcessModels.swift
- AssetProcessor+Naming.swift
- AssetProcessor+Upload.swift
- AssetProcessor.swift
- BackgroundBackupRunner.swift
- BackupCoordinator.swift
- BackupMonthScheduler.swift
- BackupParallelExecutor.swift
- BackupResumePlanner.swift
- BackupRunDriver.swift
- BackupRunModels.swift
- BackupRunPreparation.swift
- BackupSessionAsyncBridge.swift
- BackupSessionController.swift
- BackupSessionReducer.swift
- LeftoverFileAdoption.swift
- LiteRepoTransitionEngine.swift
- LocalVolumeRepoGateway.swift
- LocalVolumeRepoWriteCoordinator.swift
- LocalVolumeWriteSession.swift
- RemoteLiteRepoGateway.swift
- RemoteMaintenanceController.swift
- RemoteRepoWriteCoordinator.swift
- RepoLeaseSession.swift
- RepoWriteCoordinator.swift
- ThumbnailRenderer.swift
- ThumbnailSizing.swift
- BrowserLinkClient.swift
- BrowserLinkDiagnostics.swift
- BrowserLinkFileFrame.swift
- BrowserLinkFileSystemResponseAssembler.swift
- BrowserLinkICEPolicy.swift
- BrowserLinkPairing.swift
- BrowserLinkPolicies.swift
- BrowserLinkSignalCipher.swift
- BrowserLinkStorageClient.swift
- BrowserLinkTimestampArtifacts.swift
- StorageProfileConnectionService.swift
- AppExitMetricsMonitor.swift
- MemoryDiagnostics.swift
- DropboxOAuthService.swift
- DropboxProfileSetupCoordinator.swift
- ExecutionTerminationControl.swift
- GoogleDriveOAuthService.swift
- GoogleDriveProfileSetupCoordinator.swift
- ContentHashIndexRepository.swift
- LocalHashIndexBuildService.swift
- LocalIndexBuildCoordinator.swift
- LocalIndexChangePublisher.swift
- OneDriveAppFolderBootstrapService.swift
- OneDriveCredentialLifecycleService.swift
- OneDriveMSALService.swift
- OneDriveProfileSetupCoordinator.swift
- LocalPhotoLibraryModels.swift
- PhotoKitImageLoader.swift
- PhotoLibraryService.swift
- PiPElapsedTimeTracker.swift
- PiPExecutionBridge.swift
- PiPExecutionTransitionResolver.swift
- PiPProgressAccumulator.swift
- PiPProgressManager.swift
- ProfileReachabilityService.swift
- RestoreImportPlan.swift
- RestoreService.swift
- InboxTransferFlowCoordinator.swift
- InboxTransferItem.swift
- InboxTransferMetadataSanitizer.swift
- InboxTransferOptions.swift
- InboxTransferService.swift
- MediaDropFileStagingStore.swift
- AddDropboxStorageViewController.swift
- AddExternalStorageViewController.swift
- AddGoogleDriveStorageViewController.swift
- AddOneDriveStorageViewController.swift
- AddS3StorageViewController.swift
- AddSFTPStorageViewController.swift
- AddSMBServerLoginViewController.swift
- AddWebDAVStorageViewController.swift
- BackgroundBackupNodeDetailViewController.swift
- BackgroundBackupNodesViewController.swift
- ExternalStorageProfileSaveWorker.swift
- LeftoverCleanupViewController.swift
- ManageStorageProfilesViewController.swift
- RemoteIncompleteAssetsViewController.swift
- RemoteThumbnailSettingsViewController.swift
- ScreenBoundAsyncRunner.swift
- SMBLocalDiscoveryViewController.swift
- SMBProfileSaver.swift
- SMBSelectionViewControllers.swift
- StorageProfileDetailViewController.swift
- StorageProfileIcon.swift
- StorageProfileMutationService.swift
- StorageProfilePersistence.swift
- StorageProfileUploadWorkerCountViewController.swift
- BrowserLinkConnectionViewController.swift
- BrowserLinkScannerViewController.swift
- BrowserLinkTutorialViewController.swift
- SettingsFormCells.swift
- StorageNodeIcon.swift
- UIBarButtonItem+App.swift
- UIColor+App.swift
- ImageBrowserCacheViewController.swift
- MonthGroupingTimeZoneCatalog.swift
- MonthGroupingTimeZonePickerViewController.swift
- MonthGroupingTimeZoneSettingsViewController.swift
- Settings.swift
- WatermelonMoreDataSource.swift
- OnboardingViewController.swift
- MediaDropTutorialViewController.swift
- ProgressiveTutorialViewController.swift
- GoogleService-Info.plist
- Watermelon.entitlements
- Package.resolved
- contents.xcworkspacedata
- Watermelon.xcscheme
- project.pbxproj
- AppDelegate.swift
- MacDependencyContainer.swift
- RootView.swift
- WatermelonMacApp.swift
- Contents.json
- Contents.json
- Contents.json
- Localizable.xcstrings
- DHashComputer.swift
- FileHasher.swift
- LegacyAssetBundle.swift
- LegacyImportProgress.swift
- LegacyMigrationExecutor.swift
- LegacyMigrationPlanner.swift
- LegacyTransientErrorClassifier.swift
- LiveBundleMatcher.swift
- MediaTimestampReader.swift
- PerceptualHashCache.swift
- StoragePasswordPromptView.swift
- StringTrimmed.swift
- LegacyFolderPickerView.swift
- LegacyFolderPickerViewModel.swift
- LegacyImportRootView.swift
- LegacyMigrationProgressView.swift
- LegacyMigrationViewModel.swift
- LegacyScanResultListView.swift
- SMBDiscoveryView.swift
- SMBDiscoveryViewModel.swift
- SMBSharePickerView.swift
- SMBSharePickerViewModel.swift
- AddLocalProfileSheet.swift
- AddS3ProfileSheet.swift
- AddSMBProfileSheet.swift
- AddWebDAVProfileSheet.swift
- ProfileListView.swift
- ProfileStore.swift
- RenameProfileSheet.swift
- Info.plist
- WatermelonMac.entitlements
- DiskBackedRemoteStorageClient.swift
- InMemoryRemoteStorageClient.swift
- ProbeStorageClient.swift
- RepoWriteTestSupport.swift
- AdversarialRecoveryProbeTests.swift
- AppRuntimeFlagsTests.swift
- AsyncSemaphoreTests.swift
- BackgroundRunMarkerDestinationTests.swift
- BackupMonthScopeTests.swift
- BackupSessionHardCancelTests.swift
- BackupSessionReducerTests.swift
- BackupWorkerCountResolverTests.swift
- BaselineProtectionNetTests.swift
- BatchActionResolverTests.swift
- BrowserLinkPairingTests.swift
- CollisionKeyCacheTests.swift
- DatabaseManagerWriterIDTests.swift
- DataHexStringTests.swift
- DropboxClientTests.swift
- EngineTests.swift
- ExecutionLogTrimTests.swift
- GoogleDriveClientTests.swift
- HeaderSummaryFormatterTests.swift
- HomeAlbumMatchingTests.swift
- HomeConnectionProfileAdoptionTests.swift
- HomeExecutionCoordinatorLifecycleTests.swift
- HomeExecutionDataRefresherTests.swift
- HomeExecutionSessionTests.swift
- HomeExecutionTransferFormatterTests.swift
- HomeExecutionTransferTrackerTests.swift
- HomeLocalIndexReloadCoordinatorTests.swift
- HomeMonthGroupingTimeZoneChangeObserverTests.swift
- ICloudUploadPassTests.swift
- InboxTransferMetadataSanitizerTests.swift
- InboxTransferResourcePolicyTests.swift
- InboxTransferStateTests.swift
- LeftoverAdoptionCandidateMatcherTests.swift
- LeftoverFileScannerTests.swift
- LegacyV1WriteGateTests.swift
- LibraryPresenceIndexTests.swift
- LiteLeaseFailFastTests.swift
- LocalHashIndexResultTests.swift
- LocalMediaSourceTests.swift
- LocalVolumeCreateIfAbsentTests.swift
- MediaBrowserConnectionPoolTests.swift
- MediaBrowserDownloadDedupTests.swift
- MediaBrowserModelsTests.swift
- MediaBrowserShareMaterializationTrackerTests.swift
- MediaBrowserThumbnailReloadTrackerTests.swift
- MediaDropFileStagingStoreTests.swift
- MediaMetadataTests.swift
- MediaThumbnailCacheMigrationTests.swift
- MergedMediaSourceTests.swift
- MonthFlushRecoveryTests.swift
- MonthGroupingTimeZoneCatalogTests.swift
- MonthManifestAdoptionTests.swift
- MonthManifestReconcileTests.swift
- MonthManifestRelocateTests.swift
- MonthManifestRemoveAssetTests.swift
- MultiDeviceMarkerTests.swift
- NetworkFaultRecoveryTests.swift
- NodeEditorSafetyTests.swift
- OneDriveClientTests.swift
- OneDriveRemoteIndexCacheTests.swift
- OriginalPhotoCacheTests.swift
- OrphanCleanupLiteTests.swift
- PhotoKitImageLoaderTests.swift
- PhotoLibraryExportCancellationTests.swift
- PiPElapsedTimeTrackerTests.swift
- PiPExecutionTransitionResolverTests.swift
- PiPProgressAccumulatorTests.swift
- PrepareRunCutoverTests.swift
- ProfileRenameTests.swift
- RecoverWorkerConnectionTests.swift
- RefreshSchedulerTests.swift
- RemoteBrowserAssetBuilderTests.swift
- RemoteFaultLiteTests.swift
- RemoteFileNamingTests.swift
- RemoteIndexEngineTests.swift
- RemoteLivePhotoResourcePairTests.swift
- RemoteMonthResolverTests.swift
- RemoteMoveIndependenceProbeTests.swift
- RemoteMoveReplaceTests.swift
- RemoteOriginalVerificationTests.swift
- RemoteSidecarTornReadRepairTests.swift
- RemoteSidecarWritebackCancellationTests.swift
- RemoteSnapshotCacheUpsertTests.swift
- RemoteSnapshotFingerprintProbeTests.swift
- RemoteSnapshotOwnershipGateTests.swift
- RemoteThumbnailPathsTests.swift
- RemoteThumbnailPurgeTests.swift
- RepoFormatRouterTests.swift
- RepoLayoutLiteTests.swift
- RepoLeaseReconnectTests.swift
- ResourceRoleTests.swift
- RestoreImportPlanTests.swift
- RestoreIntegrityTests.swift
- RestoreTempFileCleanupTests.swift
- S3ClientTests.swift
- S3SigV4SignerTests.swift
- ScopeControllerTests.swift
- ScopeNormalizerTests.swift
- SectionBuilderTests.swift
- SelectionControllerTests.swift
- SFTPCredentialBlobTests.swift
- SFTPErrorClassifierTests.swift
- SMBErrorClassifierTests.swift
- SMBSelectionViewControllerTests.swift
- StorageClientPoolReplacementTests.swift
- StorageProfileOrderingTests.swift
- SyncGateCancellationTests.swift
- TestSupport.swift
- ThumbnailOrphanScannerTests.swift
- ThumbnailSizingTests.swift
- URLSessionStallWatchdogTests.swift
- V1ManifestScannerTests.swift
- V1ToLiteMigrationTests.swift
- VersionManifestLiteTests.swift
- WebDAVClientPartialUploadCleanupTests.swift
- WorkerTests.swift
- WriteLockServiceTests.swift
- .gitignore
- AGENTS.md
- CLAUDE.md
- LICENSE
- README.md
- README.zh-CN.md
// repository documentation
Was this content helpful?
(0 ratings)
