UI / UX case study · Web app
A fast, account-free archive of commercial and editorial photography: browse by client, search by what's in the picture, then gather photos into ordered sets that can be downloaded or shared as a page of their own.

The brief
The problem. A working photographer's archive spans many clients and years. Folders and file names make sense to the photographer, not to the art buyer or brand representative who needs "something sporty, black and white, with people" by the end of the day.
The goal. Make any photo findable in a few seconds without knowing how the archive is organised, and let people leave with what they came for: a download, or a curated, ordered selection they can send on.
01
The front page is organised the way a client thinks (by brand), with a second door for people who just want to browse or search the whole archive.

02
A photography archive should disappear behind the pictures. The interface is built from a small set of colour tokens, so both themes come from the same rules.

03
Photos are searched by what they show, not by file name. Visitors type the way they talk and the archive meets them halfway.

04
Search is a conversation: every result page offers the next useful refinement instead of a dead end.

05
Most visitors never need filters, so they live behind a single button and report how many are active.

06
Opening a photo gives the picture almost the whole screen and keeps everything else one step away.

07
Choosing several photos is a mode, not a separate screen, so the grid stays where it is.

08
Visitors can gather photos for a pitch or a mood board without signing up for anything.

09
A set is only useful if its order is the story. Reordering was designed to work with a mouse, a finger or a keyboard.

10
A set can be sent to anyone as a link. With no backend, the link itself carries the set.

Small screens
The layout reflows rather than shrinks. Cards stack into single posters, filters collapse, touch targets grow to 44 pt, the add-to-set menu becomes a bottom sheet and the viewer stacks the photo above its actions.





Iteration
Under the hood
Query, collection, filters and the open photo are stored in the address hash, so the back button, bookmarks and links all just work.
A static site with a generated data file. Sets stay in the browser; shared sets travel inside the link.
Lazy-loaded thumbnails that fade in, full-resolution images fetched only in the viewer, neighbours preloaded.
Labelled controls, status announcements for toasts and result counts, focus returned after the viewer closes, full keyboard paths, reduced-motion support.
Add, tag, move and remove tools appear only when the archive runs on the photographer's own computer; the public site never ships them.
Multi-photo downloads are zipped in the browser with a small store-only writer instead of a dependency.