Screens
Key engineering
Under the hood
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.
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.
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.
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
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.
