Glossary only. No implementation details. Terms are canonical — use them exactly in code, docs, and conversation.
The full-size, full-quality image file the photographer uploaded. Stored as a private Cloudinary asset; never deliverable without a signature. The thing being sold.
The only publicly viewable rendition of an Original: watermarked and heavily compressed. What the gallery shows before purchase.
A catalog entry: one Original plus its merchandising data (title, description, price, tags, caption). Owned by the Catalog.
The full set of Photos the storefront offers, managed by the Photographer in the CMS.
The single seller. Operates the admin UI, owns the Catalog. There is exactly one (brand or person) per deployment.
An anonymous visitor who pays. Has no account; identified only by their Order.
The Buyer's client-side selection of Photos not yet paid for.
One completed payment covering one or more Photos. Identified by its Stripe Checkout Session id. The Order is the sole proof of purchase.
The right, conferred by a paid Order, to download one Photo's Original. An Order contains one Unlock per Photo purchased. ("Unshuttering" a photo = acquiring its Unlock.)
The durable URL a Buyer keeps (/download?session_id=…). Never expires; safe to revisit. Presents all Unlocks in its Order.
A short-lived (minutes) Cloudinary URL for one Original, minted fresh on each visit to a Download Link. The only way an Original ever leaves the system.