Case study
Keeping the memories
Milk & Henny started with a familiar request after a party: can you send me the photos? I wanted somewhere people could browse an album and get their pictures, alongside the writing and photography I wanted to keep.
Problem
I take photos on digital and film cameras, at parties and while travelling. Sending large batches repeatedly turns the same favour into admin. A gallery needs to be easy to browse, while private files need a different sharing path.
My contribution
| Area | What I built and why |
|---|---|
| Publish an album | Built draft albums, image processing, publishing, and downloads. People can browse smaller previews and request a larger image when they want to keep it. |
| Send a private batch | Built expiring transfers, upload and download paths, previews, and separate deletion controls. A recipient can get the files without turning them into a public gallery. |
| Keep the context | Built writing and media publishing alongside the albums. Photos and the stories around them have a home beyond a temporary download link. |
Decisions
| Choice | Why it matters |
|---|---|
| Separate source files from public previews | Album manifests and originals stay in private object storage. Publishing copies display variants into public delivery storage; original downloads go through a published-album check and a signed link. |
| Do image work before browsing | Processing creates responsive variants and social previews before an album is published. The gallery can serve prepared images rather than reprocess the source for each visitor. |
| Give a transfer its own lifetime | Transfer records use Redis expiry and private object storage. Recipient access and deletion authority are separate, so sharing a download does not also give away the sender’s deletion control. |
- Private draftUpload, process, and arrange the photos.
- Public previewsPublish prepared display images for browsing.
- Original downloadCheck publication, then issue a signed download link.
What it enables
Public albums provide a repeatable place to browse and download photos. Transfers cover the private exchange, while writing keeps the context around the images. The archive remains part of Milk & Henny as the events and games grow.
Lesson
A public album and a private transfer may contain the same kind of file, but they make different promises. Giving each a clear publishing and expiry model is more useful than treating everything as an upload with a link.