Product & UI Design · 2026

Heirlooms

A photo delivery platform for wedding and portrait photographers, designed as part of my work at Fox Weddings, built around one argument: the gallery isn’t the end of the job, it’s the thing the client keeps. I designed both sides of the handoff: the couple’s gallery and the studio’s workspace, and the system underneath them, coordinating directly with engineering to get it built the way it was designed.

Role
Product & UI Design
Type
Photo delivery platform
Date
2026
Platform
Responsive web & iOS
The Heirlooms client gallery open in a browser beside the iOS photo view, showing Monica and Chris’s wedding gallery of 4,507 photographs.
01 · The problem

Delivery is treated as the end of the job

The platforms wedding photographers use are mature and, on the photographer’s side, genuinely good. But almost all of them treat a gallery as a transaction that closes. There is an expiry date, an archive fee, and eventually an email that reads like a countdown. The link is storage the photographer rents on the client’s behalf.

Meanwhile the couple’s actual job was never “review 4,507 photographs”. It is to find the twenty they’ll use, send four to family without making anyone sign up, and still have all of them in ten years. Almost nothing in the category is designed for that.

So I took the opposite position and designed the whole product from it: a delivered gallery never expires, and everything else follows from having to make that work: for the couple, and for the business that pays for it.

Never

When a delivered gallery expires: on every plan, by design rather than by tier

< 60s

Design target: link opened to first photograph saved, on a phone, no account

One pass

Design target: camera card to delivered gallery without a second organising pass

Both sides

The couple’s gallery and the studio’s workspace, designed as one system

Competitive teardown table comparing Pixieset, Pic-Time, ShootProof and Heirlooms across gallery lifespan, organising large sets, client shortlists and mobile.
I delivered a test shoot through each of the three main platforms and opened the result as a client. The opening wasn’t a missing feature: it was what they all assume about how long a gallery matters.
02 · Who it’s for

Two people want different things from the same link

One person pays for this tool and opens it every week. The other opens it once, on a phone, in bed, and may never sign in at all. Designing a single gallery that serves both is the entire problem.

Where those two pulled in different directions, the couple won. The studio’s real customer is the couple, and the gallery is the last thing the studio ever hands them, so anything that made the gallery worse in order to make the workspace tidier lost the argument by default.

Two persona cards: Nadia, a solo wedding photographer, and Monica, a client who received a gallery of 4,507 photographs.
The gap between these two is where nearly every decision in the project came from.
03 · Architecture

One gallery, two doors

The client side had to work with no account and no instructions, a link in a text message. That constraint removed a lot of options: no onboarding to explain anything, no settings to hide complexity in, and every important action reachable from the first screen.

The studio side is the opposite: a workspace someone signs into weekly, where depth is welcome and density is a feature. Same content underneath, two completely different structures over it.

Information architecture showing the client tree and the studio tree side by side, with new behaviours highlighted.
Highlighted nodes are the behaviours this project introduces: permanence, scene grouping, and turning favourites into an album brief.
04 · Low fidelity first

Deciding the shape before the styling

Three questions had to be settled before anything was drawn properly: where scene navigation lives, whether favourites are a filter or a place, and how much chrome can sit on a photograph before it stops being a photograph.

The second one mattered most. As a filter, favourites are something you have to remember; as a place with its own address, they become somewhere you return to, which is what let them turn into a deliverable later.

Low-fidelity wireframes of the mobile gallery, desktop justified gallery, and the favourites workspace with its selection rail.
05 · The couple’s gallery

4,507 photographs, and only twenty matter

Monica and Chris’s gallery is 4,507 photographs across four days and two ceremonies: a mehendi, an Indian ceremony and reception, and an Irish-American wedding day. A flat grid of that has no shape; every scroll looks like the last one. So the gallery arrives already divided into scenes, with counts, and the rows are justified rather than square-cropped so portrait and landscape frames keep their proportions. That last part sounds cosmetic and isn’t: square crops cut the composition out of every photograph in the set.

The interface itself is deliberately quiet: a warm paper ground, one ink, and a single brass accent that only ever means you did something here. Nothing in the chrome competes with the work it’s framing.

The Heirlooms client gallery showing scene tabs (Mehendi Day, Indian Ceremony, Indian Reception, Irish Wedding Day) over a justified grid.
Scenes across the top, justified rows below, and the permanence badge stated once where it reassures rather than nags.
The full-screen photo view on dark ground with a filmstrip and favourite, download and share actions.
The photo view drops to near-black and pushes every control to the edges.
The decision I’d defend first

A favourite should be a brief, not a heart

Everywhere else, favouriting produces a list. The photographer receives it as a flat export and still has to work out what the couple meant. Meanwhile the couple has no idea whether they’ve picked too many, or too few, or what for.

So in Heirlooms favourites count against the real page limit of the album being designed (38 of 60) and carry a note in the couple’s own words. The same interaction now answers a question for both people: the couple learns when they’re done, and the studio receives something it can design from.

The favourites view with numbered selections and a rail showing 38 of 60 chosen for a 40-page album.
The rail turns a pile of hearts into an album brief with a target and a note.
The share dialog showing password, download and guest sharing toggles, with 'Never expires' selected as the gallery lifespan.
Where the thesis becomes a control. Permanence is the default option, not the upsell.
Three iOS screens: the mobile gallery, the full-screen photo view, and the album selection screen with a send button.
Designed at 390px first: the desktop layout is the adaptation, not the other way round, because a phone in bed is where the link actually gets opened.
06 · The studio side

The part that has to survive a fourteen-hour day

Culling and editing is the photographer’s craft. Building the gallery is admin, and it happens at eleven at night, so the studio side is designed around removing the second pass entirely. Photographs are grouped into scenes as they upload, proposed from capture time and setting, and the photographer renames or merges rather than sorting from scratch.

The dashboard answers the question that actually gets asked between weddings: not “what have I uploaded” but “who hasn’t opened theirs”. Delivery status, client activity and waiting album selections are the primary content.

Permanence has to survive the business model too, so I framed it as a retention feature rather than a cost centre: a couple who can still reach their photographs in ten years is a couple who knows exactly who photographed them. That’s an argument, not a proof, and I’ve flagged it as one below.

The photographer's dashboard listing galleries with delivery status, client activity and pending album selections.
Sorted by what needs a decision: unopened galleries and album selections waiting on a reply.
The gallery editor mid-upload, showing 3,104 of 4,507 photographs uploaded and four automatically detected scenes.
Scenes proposed during upload, editable before delivery. The organising pass disappears into a step that was already happening.
07 · Design system

Ten tokens and a rationed accent

Every colour in this product sits behind photographs, and wedding photographs are already warm, saturated and busy. So the palette is deliberately narrow: a paper ground, one ink, and a single brass accent. No second accent colour was allowed in, which meant status had to be carried by shape and placement rather than by inventing new hues.

Components were built as variants from the start, because the states are where a photo product breaks: a favourite that’s already been sent, an upload halfway through, a gallery with no cover chosen yet. Drawing only the happy path would have hidden all three.

The Heirlooms colour tokens, radius and spacing scales, and the type specimen for Instrument Serif and Inter.
Instrument Serif carries names and numbers: the human parts. Inter does the work.
Component library showing buttons, status pills, scene chips, photo cell states, toggles, progress bars and metrics.
The photograph cell is the most-used component in the product, so it carries the most states.
08 · What I’d test next

The honest list

I’m not going to pretend everything here is settled. Three things still bug me, and they’re what I’d bring up first if I put this in front of a real photographer.

Automatic scene grouping is the part I’m least sure about. It works well for a wedding day, since the time and setting line up in a pretty predictable order. It falls apart for something looser, like a 90-minute family session in one park. If people end up correcting the groupings a lot, that’s really just the second pass coming back in a different shape, so the flow I’d actually want to test first is the correction, not the grouping logic itself.

I also haven’t worked out the cost side of “never expires.” It’s an easy line to put in a deck and a genuinely expensive promise to keep. I still think it’s the right call for retention, but I haven’t run the numbers, and at real volume this either pays for itself or it doesn’t.

And guest access is still unresolved. Letting family view and download without an account is obviously right for the couple, but it’s a real headache for a studio that makes money selling prints and doesn’t want people going around them. I don’t think that’s something you can bury in a settings toggle and call solved.

Next case study

GoodNotes →