Skip to content

Case study · Vladlena Nikulina Fotografie · 2026

A portfolio site that turns a photo into a WhatsApp enquiry

A portfolio website for a portrait and family photographer in the Essen, Düsseldorf and Münster area, built so that a visitor who arrives from Instagram can ask about a shoot from the photo they are looking at.

First screen of the site on a desktop: a full-width portrait with the name Vladlena Nikulina and “Fotografin für Portraits und Familie”, Instagram and WhatsApp buttons at the top, and a gold “Interesse? Schreib mir gerne.” bar with an “Anfragen” button at the bottom.
The first screen: one of her photos, her name, and two ways to reach her before any scrolling. The gold bar stays at the bottom of the screen on every page. The UI is German because her clients are.

The constraints

What I didn't get to choose

Design and engineering

Four decisions, and what each one prevents

  1. 1.Every photo is a way to ask about it.

    Each service photo carries a WhatsApp button that opens a chat with a message already written for that service: “Hallo Vladlena, ich interessiere mich für ein Portraitshooting.” Phones have no hover, so there the caption and button are always visible (@media (hover: none)). On desktop, hover reveals the caption and the button sits next to the service text instead.

    Prevents: A visitor who likes a photo having to look for contact details and then explain which kind of shoot they mean. The first message already says it.

    Portraits section on a phone: a portrait photo with an italic caption and a “Porträts anfragen” button over it, and the fixed “Anfragen” bar at the bottom of the screen.
    On a phone the photo carries its own enquiry button, above the fixed bar. Tapping it opens WhatsApp with the portrait-shoot message filled in.
  2. 2.The way to write to her is never off-screen.

    A fixed bar at the bottom of every page, the legal pages included, holds a single WhatsApp button with a general message. The first screen adds WhatsApp and Instagram buttons above the fold.

    Prevents: Interest peaking halfway down the page while the only contact link waits in the footer.

    First screen on a phone: portrait photo with the name Vladlena Nikulina, Instagram and WhatsApp buttons at the top, and the “Anfragen” bar at the bottom.
    The first screen on a phone: her name, two contact buttons at the top and the enquiry bar at the bottom, before any scrolling.
  3. 3.No cookies, so no consent banner.

    No analytics and no YouTube or Vimeo embeds. The planned video was specified as self-hosted, and was later deferred. Fonts are bundled at build time with next/font. Loading the live site sets no cookies, and every request goes to her own domain.

    Prevents: A legal dialog over the hero photo being the first thing a visitor from Instagram sees on their phone, and a consent tool the client would have to maintain.

  4. 4.Photos never move the page.

    The site is a static export with no image server, so a sharp script converts every photo to WebP (quality 82) before the build. Each service photo sits in a fixed-height frame (500 px on phones) and is cropped to fit, photos below the fold load lazily, and only the first-screen photo loads eagerly. The trade-off: every screen gets the same file.

    Prevents: Text and buttons jumping as photos arrive, so a thumb aimed at “Anfragen” lands on it, whatever the shape of the photo Vladlena swaps in next.

Portraits section on a desktop: a portrait photo on the left; on the right the heading “Porträts”, a short German introduction and a gold “Porträts anfragen” button.
One of the six service sections on a desktop. The photo keeps its fixed frame, and the enquiry button moves next to the text, where a mouse user is already reading.

See it on your phone

The site is live and in use. Open it on a phone to follow the path her visitors take, from the first photo to a pre-written WhatsApp message. The source code is private.

Available for freelance projects and full-time frontend roles.