TALITA & DMITRI
A post-wedding website with photo galleries, music, and more
TL;DR
A post-wedding website where guests could relive the day — two photo galleries, a highlight carousel, an embedded Spotify playlist, and notes from us to them.
OVERVIEW
After our wedding, my wife and I wanted one place where guests could go to relive everything — not just photos, but the music we played, some words from us, all of it. The site has a highlight carousel on the landing page, two full photo galleries (one from our photographer, one from a friend shooting candids on an old digicam), an embedded Spotify player with our wedding playlist, and a section with notes we wrote thanking everyone for coming. Guests can click any photo to expand it and download the full-resolution version.
THE PROBLEM
The main technical challenge was storing and serving ~500 high-resolution photos without hitting free tier limits. Google Drive would have hit my storage limit. Dumping them into the GitHub repo was a non-starter.
The galleries also had a layout problem: photos from two different cameras in two different aspect ratios meant a standard uniform grid looked terrible. They needed to flow naturally regardless of dimensions.
I initially went with Cloudinary ↗ for storage and optimization, but hit their bandwidth limits before the site even launched. With multiple people downloading full-resolution photos at the same time, it was never going to hold up.
THE SOLUTION
I moved storage to Cloudflare R2 ↗, which has no egress fees when serving through Cloudflare's network — a natural fit since the site was already deployed to Cloudflare Pages.
For image delivery, I used Astro's built-in Image component ↗, which pulls the R2 URLs at build time, optimizes them, and generates srcsets automatically. Lazy loading handles the rest — photos only download as guests scroll into them, which matters a lot at this volume.
For the layout, I went with a masonry grid so photos of any aspect ratio sit naturally next to each other without cropping or empty space.
OUTCOME
The site has been up since the wedding. No bandwidth issues, no cost, and everyone got their photos.