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.
- 62 commits over 8 weeks
- 0 cookies, 0 third-party requests
- Next.js 16 · React 19 · Tailwind 4

The constraints
What I didn't get to choose
Visitors arrive from Instagram, on a phone
Instagram is where people find her. The site is the step between a post and a message, so every layout starts from a phone held upright.
WhatsApp is the contact channel
It is the lowest-friction way to reach someone in Germany. No booking form, no pricing page: the site's job is to start a conversation.
The photos are the product
Six services, from portraits and families to business and events, each introduced by one of her photos. Nothing on the page may compete with them.
German law, and no cookie banner
A commercial site needs an Impressum and a privacy policy. The client also wanted no consent dialog, which rules out analytics and third-party embeds.
Light and warm, by her choice
A dark, dramatic direction was designed and explored. She rejected it: her style is soft natural light, and the site had to look like her work.
Design and engineering
Four decisions, and what each one prevents
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.

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.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.

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.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.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.

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.