All websites/Marketing Site2026

Photography by Dominique

High-key imagery, and a design system that does not fight it.

Client
Photography by Dominique
Year
2026
Type
Marketing Site
The Photography by Dominique homepage, headlined Quiet portraits of the days that pass quickest over a sleeping newborn, with the scrim darkening from the left so the type stays readable.
Overview

Every photograph in this studio's catalogue is high-key: pale skin, cream wraps, white floors. The usual white-text-on-a-darkened-hero pattern turns that imagery grey without ever reaching legible contrast, so the whole design had to route around it. Directional scrims, split CTA bands, and an art-directed mobile hero let the type stay readable while the pictures keep their light.

Stack
Next.js 15React 19TypeScriptTailwind v4Static ExportSchema.orgResendaxe-core
What it does

The shortlist.

  • 01Directional scrims instead of flat overlays, so type sits in dark space and the subject keeps its light
  • 02Art-directed mobile hero: photograph above, headline below on paper, because a landscape studio frame loses its composition in a phone viewport
  • 03104 gallery photographs, each with real dimensions baked in so the grid reserves its aspect ratio and nothing shifts
  • 04Structured data assembled as one @graph per page, with page nodes attached to the business by @id
  • 05No aggregateRating published: the testimonials carry no star ratings, so none were invented
  • 06axe-core WCAG 2.1 A/AA: zero violations across all seven page templates
  • 07Two build targets from one codebase: a full Node app, and a static export for the Pages preview
Inside the system

Capabilities, in plain language.

01

A palette built for pale pictures

Cormorant Garamond over Jost on a warm paper ramp of porcelain, linen, and shell, with espresso ink and a single clay accent. The ink ramp and the accent are both tuned to clear 4.5:1 on the lighter surface rather than assumed to.

02

Five galleries, one grid

Newborn, maternity, family, cake smash, and senior portraits. The image manifest is generated from the files on disk, so every photograph's true aspect ratio is known at build time and the masonry never reflows under a loading image.

03

Pricing that is actually legible

Eight sessions from $250 to $500, each with duration, what is included, and the image count stated up front. The same eight are emitted as an OfferCatalog with their real prices.

04

Enquiry that fails honestly

The contact endpoint validates server-side and delivers through Resend. Without credentials it returns a 503 and the form shows a phone-and-email fallback rather than pretending the message went somewhere.

Inside the product

A look around.

The investment page's newborn collections: three session cards with durations, what is included, and prices from $275 to $500.

The investment page's newborn collections: three session cards with durations, what is included, and prices from $275 to $500.

The newborn gallery, a masonry grid where each photograph's real aspect ratio is reserved before it loads.

The newborn gallery, a masonry grid where each photograph's real aspect ratio is reserved before it loads.

The portfolio index, setting the maternity gallery's copy beside its photograph on paper rather than over it.

The portfolio index, setting the maternity gallery's copy beside its photograph on paper rather than over it.

The art-directed mobile hero: a portrait crop above, the headline below on paper.

The art-directed mobile hero: a portrait crop above, the headline below on paper.

104
Photographs, every one with alt text
0
axe-core WCAG violations
8
Sessions, priced in the markup
27
Client reviews, unrated by choice
Next case studyIMS, Inc. Website

Forty years of secure print, presented like it matters.

Take the meeting

Let's build something
stupidly good.

Bring us the messiest part of your operation. The thing you've been avoiding because the spreadsheet still kind of works. We build the replacement.