GuestSnap

Collect photos and videos using a private QR code

About

GuestSnap makes it effortless to collect and share event photos and videos using a unique QR code. Guests simply scan the private code with their phones to instantly upload media to a shared digital album. With all photos and videos stored in full resolution, you can easily relive the memories anytime. No app downloads or sign-ups are needed—just scan, share, and enjoy.

How they use Cloudflare

To build GuestSnap, the lead developer wanted a cost-effective serverless solution that would make it easy to build, manage, and eventually scale the application without breaking the bank. By leveraging Cloudflare’s global network and easy-to-use developer tools, the team decided Cloudflare’s Developer Platform would be a great place to start building.

For starters, Cloudflare Pages hosts the GuestSnap frontend via Remix, which offers simple preview and production environments. The team uses Cloudflare Workers for a variety of use cases including managing email routing, automating sending follow-up emails after an event, running database queries to delete expired authorization tokens, fetching data from their R2 storage buckets, and resizing images dynamically in up to eight variants for the application.

For data storage and caching, GuestSnap stores feature flags with Workers KV to easily toggle upon request. All video uploads are stored and assigned a stream key to easily manage guest galleries and quickly load future requests. Video playbacks are then served to users as they reaccess galleries through Cloudflare Streams.

GuestSnap didn’t want to worry about rising cloud storage costs as the application grew. After researching cloud storage services, the lead developer decided on Cloudflare R2 Object Storage to eliminate egress fees, which has significantly reduced costs relative to other storage providers.

When users upload images to a gallery, the image is stored directly in a R2 bucket. By pairing R2 with Cloudflare Queues, whenever an image is uploaded, a queue will make a request to write the asset’s metadata to the database. After a short delay, the queue will check to see if the image has been uploaded. If a database entry is created, then no further action is needed. If the database entry is missing, the queue will write the metadata to the database. This helps with data resiliency, ensuring that if an image is uploaded, even with a disruption in a network connection, the database ensures the assets are assigned to the right event.

Finally, to improve GuestSnap’s speed, security, and privacy, the developer installed Cloudflare Zaraz, a third-party manager, on the marketing site to load cloud tools outside of browsers.

Why Cloudflare?

"Without Cloudflare, I don't think we would be able to build GuestSnap in our spare time. Cloudflare's inexpensive, and zero-egress object storage empowers GuestSnap to run smoothly.”