The client gallery is a folder with ?thumbnail on it
A photographer delivers 800 shots from a wedding. Clients want to browse previews on a phone and download full-resolution selects. The standard answer is a gallery SaaS at $30 a month that re-hosts every image.
The RAW exports land in weddings/okafor/ on the container. The client gets the files URL behind a password group. Their browser shows the folder. For previews, the gallery page requests IMG_0412.jpg?thumbnail=&format=webp&width=800&q=80 and the files service resizes on the fly, serving WebP with an hour of cache. Nothing is pre-generated. Nothing is duplicated.
The client picks thirty. They open weddings/okafor/selects/?zip and the folder arrives as one archive.
No gallery subscription, no uploading twice, no export pipeline. The originals sit in one folder. Every size the client needs is a query string.
The originals sit in one folder. Every size the client needs is a query string.