operations · laravel · vue · 2022
Photo proofs, delivered and chosen without the email thread
Reelbox, Australia
A portal that replaced emailing photo proofs for an Australian video archiving business. The business uploads a batch as a ZIP, its customer signs in with an access code to browse and choose favorites up to a set limit, and the chosen photos come back as one numbered, branded archive.
The operation
Reelbox is an Australian video archiving business, and part of its delivery is putting a large batch of images in front of a customer who has to decide which ones they want.
That used to happen over email. Proofs went out as attachments, the picks came back in a reply, and somebody matched the reply against the original batch by hand.
Now the business uploads a batch as a single ZIP. The customer signs in with an access code, browses the set, drags to choose their favorites up to a limit the business sets, and confirms. The selection comes back as one numbered, branded archive, and the business is notified that it is ready.
The part that was actually hard
Capacity, not features. A batch is hundreds of full-resolution photos, and the whole thing stands or falls on whether a small, inexpensive server can get through them without collapsing. So the photos are handled a few at a time rather than all at once, each one is watched for what it costs to process, and anything that fails is picked up again instead of quietly dropped. Getting that right took about two years of real batches, which is the honest measure of the difficulty: not one clever fix, but repeated tightening against files that kept arriving bigger than the last lot. The business never had to buy a bigger server.
Seven steps the photographer never sees. Unpack the upload, find the photos, make a preview of every one, check they all finished, package the customer's choices in the order they picked them, send the notification. The screen moves itself from processing to ready without anyone refreshing it, and a second upload adds to a set rather than wiping it, which is the sort of thing you only think of after somebody has lost an afternoon to a system that did the other thing.
Getting the files there at all. These uploads run to several gigabytes, so they go up in pieces that can resume. Without that, one dropped connection near the end costs the entire transfer, and the person uploading has no way of telling how much they just lost.
Choosing is the part the customer actually sees. Two hundred or more thumbnails, dragged to select and reorder, with the maximum enforced as they go, progress saved so a session can be picked up later, scroll position remembered, and a confirmation step before anything destructive. That interface was iterated through several rounds of the client's own feedback, which is usually where a tool like this is won or lost.
Where it stands
Live at photos.reelbox.com.au, running on the client's own server rather than mine. The work ran intermittently from 2022 to 2025, forty-nine commits across roughly three years.
Different business, same shape of problem?
Every system written up here started with somebody describing an operation that had outgrown the way it was being run. If that sounded familiar, tell me how yours works today.
Talk through your version