Brittny Ann Photography
LiveA near-zero-cost photography site with auto-generating galleries and private client delivery
Built by Caden Sorenson · Launched June 2026
What is Brittny Ann Photography?
Brittny Ann Photography is a family and couples photographer in Logan, Utah, serving Cache Valley. The site needed to do two jobs: be a warm, photo-forward shopfront that books sessions, and be the place clients come to view and download their photos. It also needed to cost almost nothing to run, because it is a new, part-time business.
The Build
This is a Next.js 15 site running on Cloudflare, engineered around a single idea: keep the cost near zero by designing around $0 egress.
Key technical decisions:
- Private R2 bucket, no public URL. Original photos live in Cloudflare R2, which charges no egress fees. The bucket is never exposed directly; a single worker is the only public read path for images.
- On-the-fly resizing with Cloudflare Images. The worker resizes originals to web sizes on demand and edge-caches them, so full-resolution files never leave storage during normal browsing.
- Folder-as-gallery. Brittny drops photos into a folder in the bucket and a gallery appears. A scheduled worker reconciles the bucket with the database, creating galleries and, for private ones, an unguessable share code.
- Watermarked public galleries, private client delivery. Public galleries are watermarked and view-only. Private galleries are reached by share code and allow full-resolution downloads through short-lived presigned links.
- Portable by design. Storage and database are reached over Cloudflare’s HTTP APIs rather than runtime bindings, so the same code runs on any Node host.
Results
Brittny has a professional, fast site that books sessions and delivers client galleries, running on infrastructure that costs almost nothing while the business is small and can scale up without re-architecting.
Build log: building a near-zero-cost photography site, and the bug that took it down.
Frequently Asked Questions
- Yes. Brittny Ann Photography is an example of Vient's client work for local businesses. Vient builds custom websites and web apps for photographers, salons, contractors, and other small businesses around Logan and Cache Valley, Utah. The contact page is the fastest way to start a project.
- Photos are dropped into a Cloudflare R2 bucket, one folder per gallery. A scheduled worker reconciles the bucket with the database, so a new folder becomes a gallery automatically. A public/ prefix makes a gallery a watermarked, view-only public gallery; a private/ prefix makes it a private client gallery with an unguessable share code and full-resolution downloads.
- To keep the running cost near zero for a new, part-time business. Cloudflare R2 charges no egress fees, so serving images does not rack up bandwidth bills, and Cloudflare Images resizes originals on the fly so the site only ever ships web-sized photos. The original full-resolution files never leave the private bucket except through short-lived presigned download links.
- Private galleries are never indexed or linked publicly. Each one is reached by an unguessable share code (about 48 bits of entropy), and the image worker refuses to serve a private photo unless the request carries a valid, unexpired share code that owns that gallery. Full-resolution downloads use short-lived presigned URLs straight from storage.
Does Vient build websites for photographers and small businesses in Cache Valley?
How does the photo gallery system work?
Why was it built to run on Cloudflare R2 and Images?
How are private client galleries kept secure?
More about Brittny Ann Photography
- Behind the buildBuilding My Wife a Photography Site for Almost $0 a MonthMy wife is starting a part-time photography business, so I built her a Next.js site on Cloudflare designed around $0 egress. Then a Next prefetch quietly tripped Cloudflare's CPU limit and took the gallery down.
- From the blogBuilding a Pirate-Themed Barbershop Site, Mostly by Prompting ClaudeA barber in Cove, Utah had an Instagram and no website. I gave Claude the right prompt, all the real details, and a styling direction, and it built the three files. The hard part was getting the content, not the code.
- From the blogBuilding a Local-SEO Site for an Age-Restricted Shop, in Code This TimeI tried an AI website builder on one client site and ended up rebuilding it in code. So this one I built in Astro with Claude from the first commit. Here's what it takes to build a clean local-SEO site for an age-restricted retailer.
- From the blogBuilding PackSmart: An AI Packing List With WeatherHow I built a free AI-powered packing list tool as part of the Travel Vient travel ecosystem, and what I learned about wrangling LLM output into reliable JSON.
Related projects
- Related projectCub River Kratom & Vape ShopA custom static website for Cub River Kratom & Vape Shop, a specialty retailer in Franklin, Idaho serving Cache Valley. Built in code with Claude in Astro 5, with a single source of truth for business data, Store and FAQPage JSON-LD for local search, programmatic nearby-city landing pages, and a 21+ age gate.
- Related projectGriffin RenovationA hand-coded static website for Griffin Renovation, a residential renovation contractor in Cache Valley, Utah. Built with plain HTML, Tailwind CSS, and vanilla JavaScript. Deployed on Netlify with full SEO including JSON-LD structured data for local search.
- Related projectPirate BarberA single-page website for Pirate Barber, a barbershop in Cove, Utah. Rebuilt in 2026 on Astro and Tailwind around one barber, one chair, and a phone number. Prices, hours, and reviews on the page, no booking app in the way.