Lumora
A CRM for photographers — first booking to final invoice

Lumora is a CRM built for photographers. Each photographer gets their own multi-tenant studio to manage corporate clients, schedule sittings, deliver proof galleries, and invoice — one tool from first booking to final print. I designed and built it end to end across six phases.
The problem
Photographers run their whole client lifecycle across a dozen disconnected tools — a spreadsheet for clients, email for scheduling, a separate gallery host, yet another invoicer. The job was one system that handles it all and still feels like each photographer's own product.
What I built
A multi-tenant CRM on Next.js 16 and Prisma 6 — one isolated studio per photographer. Client and employee rosters with CSV import, scheduled sittings with self-serve booking links, watermarked proof galleries with selection limits, and branded invoices. Auth on Auth.js v5, payments through Stripe, asset storage on Cloudflare R2, transactional email via Resend.
Outcome
An end-to-end client workflow: a photographer signs up, brands their studio, imports clients, schedules shoots, delivers proofs, and gets paid — without stitching five tools together. Built across six delivery phases.
- Multi-tenant — one isolated studio (CRM) per photographer
- Full client lifecycle: clients → sittings → proofs → invoices
- Watermarked proof galleries with selection limits
- Stripe billing · Cloudflare R2 · Auth.js v5