Case study 01 / 04 · Event SaaS
← All workSnapvyn

Moments, becoming shared.
Event photo and video sharing through a QR code, with browser uploads, live projector walls and a disposable camera mode. No app download needed.
- Role
- Founder & sole engineer: architecture, full-stack development and real-time systems
- Year
- 2026
01Overview
Overview
Built with
- Next.js
- TypeScript
- NestJS / Fastify
- PostgreSQL & Drizzle
- Redis & BullMQ
- Socket.IO
- Cloudflare R2
- Payments.lk & Stripe
Filed under
- Own product
- SaaS
- Real-time
- AI
02The challenge
The challenge
Wedding and event guests resist installing an app or registering an account for a single evening. Traditional solutions forced downloads or app-store signups, stranding hundreds of candid photos and videos on individual camera rolls that the host never got to see.
03The thinking
Roads taken, and the ones that weren’t.
- 01
Took
A QR scan opening directly into a mobile web camera and uploader.
Instead of
A native iOS/Android app or an account sign-in gate.
Because
A QR scan lets guests contribute photos without installing an app or creating an account for a single event.
- 02
Took
WebSocket real-time Live Photo Wall for venue projectors.
Instead of
Static post-event downloadable albums.
Because
The host can display approved guest photos during the event, rather than waiting until it is over to share an album.
- 03
Took
Service worker client-side queue with resumable background uploads.
Instead of
Standard multipart HTTP form POSTs.
Because
Venue connections can drop. A local IndexedDB queue keeps pending captures available for upload when connectivity returns.
- 04
Took
Dual checkout supporting Payments.lk (LankaQR) and Stripe.
Instead of
Stripe-only international billing.
Because
Local hosts can pay through domestic banking apps and LankaQR, while Stripe supports international card payments.
04The engineering
The system, taken apart.
Latency-sensitive interactions happen immediately in the browser; heavy video transcoding, AI highlight generation, and image scaling run asynchronously on background BullMQ workers behind Cloudflare R2 and PostgreSQL.
01
Guest
- QR scan & web camera
- Disposable camera mode
- Service worker offline queue
02
Gateway
- Caddy reverse proxy
- NestJS / Fastify API
- Better Auth & tenancy
03
Async & AI
- Socket.IO live wall feed
- BullMQ background workers
- AI curation & highlights
04
Storage
- PostgreSQL & Drizzle
- Cloudflare R2 signed URLs
- Payments.lk & Stripe
The loopLive Wall & Gallery: real-time WebSocket broadcast streams approved guest captures straight to venue projectors, screens, and shared albums while the event is underway
What was built
- 01
Reduced guest onboarding to a single QR scan that opens an in-browser camera and gallery with zero account creation or app installation.
- 02
Engineered a real-time Live Photo Wall display that streams guest captures onto venue projectors and TV screens over WebSockets with host moderation queues and reveal delays.
- 03
Built vintage Disposable Camera mode simulating analog film grain with delayed photo reveals after event completion.
- 04
Implemented client-side offline background queues via service workers, ensuring captures taken in crowded reception venues upload smoothly as cellular connectivity recovers.
- 05
Built an automated AI highlight generator, duplicate detector, and story curation pipeline to compile event reels without manual editing.
- 06
Architected dual localized payment processing: integrated Payments.lk (LankaQR & local cards) alongside Stripe for global event pass billing.
05The experience
What people actually see.
Captured from the live product. Nothing here is a mock-up.





06What shipped
What shipped
- Zero-install event photo sharing with instant QR camera onboarding.
- Real-time WebSocket Live Photo Wall for venue projectors and screens.
- Multi-currency monetization supporting LankaQR, local cards, and Stripe.
Next case study
Menuvyn
One tap, the whole restaurant moves.
Continue
