Case Study · Client work

Photography Portfolio

A production-grade portfolio for a professional photographer — bilingual, CMS-driven, with a private pricing gate and automated enquiry emails.

RoleDesign & Full-Stack Development
TypeClient work
StatusLive in production
Year2024
Next.js 16TypeScriptSanitynext-intlSupabaseResendVercel
Photography Portfolio — desktop
Photography Portfolio — mobile

Overview

A professional photographer based in Chișinău needed a portfolio site that could showcase their work beautifully, handle bilingual content (RO / EN), let them manage everything themselves without a developer, and gate the pricing page behind a password.

The result is a clean editorial site with a dark aesthetic, fast image loading via Sanity's image pipeline, a fully functional contact form via Resend, and a Supabase-backed pricing gate.

The brief

  • Image fidelity — Lighthouse ≥ 90, no compression artefacts
  • Fully bilingual RO/EN with route-level locale switching
  • Self-serve headless CMS so the photographer can update content without code
  • Private pricing gate — password required to view pricing
  • Reliable enquiries — contact form with email confirmation

Approach

Editorial design

Dark, spacious layout that lets the photography breathe. Typography hierarchy using Inter + JetBrains Mono.

Headless CMS

Sanity Studio for all content — galleries, bio, packages, testimonials. No code needed for updates.

True bilingual

Field-level localization in Sanity, next-intl for routing and string management, hreflang for SEO.

Private pricing gate

Supabase-backed auth flow. Clients enter a shared password to unlock the pricing page.

Transactional email

Resend integration for contact-form confirmations to both client and photographer.

Branded social cards

Custom OG image route that renders gallery images with the brand overlay.

Engineering highlights

  • Image fidelity system — Sanity image URLs with quality=90, format=webp, responsive sizes
  • Custom OG image route — next/og with dynamic Sanity image injection
  • Clean i18n routing — /ro and /en with automatic redirect from root

Outcome

  • In production since 2024
  • Client manages all content independently via Sanity Studio
  • Private pricing gate preventing public price scraping
  • Branded social previews on every gallery page

Want something like this?

Have a project in mind? Let's discuss what I can build for you.

Start a project