All ten
My Photo Copy logo

My Photo Copy

Verified photo backup to a drive you own

Product, app, verification engine

Pending App Store review

Photo Trim decides what you can delete. This does the opposite job: it puts your whole library on a disk you own. Plug in a USB-C SSD, choose the albums, dates and media types to include, and every original file is copied and then read back off the drive and checked. Plug the same drive in months later and it verifies what is already there, then extends the backup with whatever is new. No cloud account, no computer in the middle, no subscription.

iOS appExternal drivesShared backend
SHA-256per-file verification
originalsnot previews or re-encodes
0cloud round-trips
4languages

Screens

Key engineering

SHA-256 verification passesper-drive manifestsincremental re-runsUSB-C external volume I/OPhotoKit original-file accessresumable job state machinebackground-safe transfers

Under the hood

Architecture

The same native core as its sibling, pointed at a different promise: a job engine that copies originals to an external volume and then reads them back to check them. The engine is a pure TypeScript package; platform-specific I/O sits behind it.

Data & state

Each drive is a destination carrying its own manifest, so re-plugging one months later verifies what is already there and extends the backup instead of starting again. Job state is durable, so an interrupted run resumes where it stopped.

Runs on

Entirely on the phone and the drive. No cloud round-trip is part of the copy path, which is the product rather than a configuration option.

Operational risk

Interruption is the normal case, not the exception. The failure that matters is a file reported as backed up that is not, so every file is hashed back off the drive after it lands — and the permission model is treated as a product surface, because the OS will hand back a preview instead of an original if asked carelessly.

Stack

App
React NativeExpoExpo UIop-sqliteDrizzleTanStack QuerySentryStoreKitOTA updates
Engine
backup-core (pure TS)per-drive manifestsjob state machineresumable transferSHA-256 passes
Native
PhotoKit original-file accessexternal volume I/Obackground-safe transfers
Backend
Cloudflare WorkersHonoD1R2Better Auth

What it took

  • A different promise from its sibling. Photo Trim is an editor for a library you are keeping on the phone; My Photo Copy is an archivist that gets the originals off it. Shared Swift plumbing, entirely separate product model, screens and data.
  • Verification is the feature, not a checkbox: every file is read back off the drive and hashed after it lands, so “backed up” means checked rather than copied and hoped for.
  • Each drive is a destination with its own manifest. Re-plug it in six months and the app verifies what is already there and copies only what is new, instead of starting the whole library again.
  • iOS fights this harder than it looks: Limited Access hands apps a preview rather than the original file, so the permission model had to become part of the product design instead of a prompt to dismiss.
  • Transfers of tens of thousands of files get interrupted — thermal throttling, a lock screen, a pulled cable — so the job engine is durable, resumable, and honest about progress.