
Glint
Event photo collection
Every guest's camera roll, in the host's own Drive before the night ends.
- Role
- Designed, built and shipped end to end
- Timeline
- 2026
- Type
- Event photo collection SaaS
- Platforms
- Web
Stack
The problem
The best photos of any wedding are taken by the guests, and they die on the guests' phones. Hosts spend the following weeks begging in group chats, collecting compressed re-sends of a night they already paid a photographer for. Glint exists to collect everything, from everyone, while the event is still happening.
Nobody installs an app at a wedding, and nobody creates an account between courses. That set the bar: an upload flow that works in any browser on any phone, including the in-app browsers QR scans open into, over venue Wi-Fi that drops mid-transfer. And the host should own the result outright, in their own storage, not rent access to a silo.
Approach
No app, no account
Guests scan a QR code and land on a branded upload page in the browser. That is the whole flow: no install, no sign-in, no permission maze. The page detects in-app browsers, decodes iPhone HEIC shots so previews render, and accepts a whole camera roll in one drop with live per-file progress. Friction that costs a normal product a signup costs this one the photos, so the guest path stays ruthlessly bare.

An uploader that refuses to fail
Serverless routes cap request bodies at about 4.5 MB, which is smaller than almost every video a phone shoots. Small files go up in a single request; anything larger switches to a resumable path that streams 4 MB chunks. Each phase gets its own failure budget: a 30 second stall timeout while bytes are moving, a 90 second grace once a chunk's bytes are sent and Drive is committing them, a hard 120 second ceiling per request, and backoff that honors the server's retry hints. Progress persists to IndexedDB, so a page reload or iOS backgrounding resumes the upload instead of losing the guest.
The host owns the storage
Media streams directly into the host's own Google Drive through a connected account; Glint's database keeps metadata only. That one decision removed storage costs, retention policy and the hardest privacy questions in a single move, and it means the host keeps every original even if the product disappears. Around it sit the guardrails a public upload link needs: per-event size ceilings, rate limiting, an admin console, and a scheduled job that mails the host a morning-after summary.

Outcome
Glint is live at glint.pics, with paid event passes running through Stripe. The first working build, from uploads to billing, came together in a week. The full loop works today: create an event, print the QR, collect the night, keep the originals in your own Drive.
It stays deliberately small and grows only when reality demands it: the uploader's hardening came from real failures at real events, not a roadmap.
Want something like this?
Tell us what you're building and we'll give you an honest assessment of scope, timeline, and cost.