INV—W/CE · CASE · 2026 REACT · FRAUNCES · CINEMATIC
Invental/ Works/ Chef Étienne
Landing page React — 2-week build · Shipped April 2026

Chef Étienne.

A cinematic, editorial website for a private chef in Montréal — three mood palettes, three typographic voices, a recipe carousel, market-day rail, and a booking flow that feels like a dinner invitation.

Chef Étienne
2 weeks · design + build + photography direction
React SPA · 3 mood themes · Booking flow · Recipe engine
Food · Hospitality · Private dining
Chef Étienne — hero section with lemon tart [ FIG. 001 ] · Signature dish · hero
[ M · 01 ]
3
Mood palettes: Rouille, Cellar, Linen
[ M · 02 ]
3
Typographic voices: Editorial, Brutal, Manuscrit
[ M · 03 ]
9
Sections from preloader to booking modal
[ M · 04 ]
23
Original food photographs directed & styled

01 · The BriefA chef who cooks, not a chef who templates

Étienne is a private chef in Montréal — intimate dinner parties, market-sourced menus, French technique with local ingredients. His existing online presence was a social media page and a phone number. He needed a website that feels like sitting at his table: unhurried, warm, and unmistakably artisan.

The challenge: build a site that communicates luxury without pretension, showcases food without looking like a stock-photo catalogue, and drives bookings without feeling transactional.


02 · Design SystemThree moods, three voices, one kitchen

The design is built around swappable moods and typographic voices — giving Étienne a site that can shift personality for different seasons or audiences without a redesign:

Mood palettes 3 switchable themes
Rouille (#B14A22)Cellar (dark, gold)Linen (pale, stone)
Typographic voices 3 type systems
Editorial (Fraunces)Brutal (Mono)Manuscrit (Garamond)

Rouille — warm rust on cream paper. The default. Cellar — dark mode with candlelight gold on espresso. Linen — pale, monochrome, stone replaces rust. Each palette swaps via CSS custom properties.

Typography pairs Fraunces for display headlines, Cormorant Garamond for editorial body, Inter for UI elements, and JetBrains Mono for metadata — four families orchestrated into three distinct voices.

"A dinner party should feel inevitable — the site should too."Étienne — on the brief

03 · What We BuiltNine sections, one continuous meal


04 · Tech StackReact SPA with cinematic ambition

Frontend React 18 + Babel (no build step)
React 18JSX (Babel)CSS custom propertiesIntersectionObserver
Design tokens CSS variables, data-attribute theming
3 mood palettes3 type voices3 tempo paces27 combinations

The entire site runs as a single-page React application with no build toolchain — React and Babel load from CDN, keeping the development workflow zero-config. Theming uses data-mood, data-voice, and data-tempo attributes on the HTML element, swapping 30+ CSS custom properties per combination.


05 · The ResultA website that smells like bread

Chef Étienne's site went from concept to production in two weeks. The photography direction produced 23 original images that feel editorial, not commercial. The three-mood system gives Étienne a living brand that can shift with the seasons — Rouille for autumn warmth, Cellar for winter dinner parties, Linen for summer garden events.

The booking flow converts inquiry to confirmed dinner in a single conversation. The recipe modal turns visitors into return visitors. And the site loads fast despite the visual ambition — no framework build, just smart lazy-loading and CSS-driven animation.

"

Étienne doesn't just cook — he creates an evening. The website Invental built captures that perfectly. Guests ask about it before they ask about the menu.

Marie-Claire D. — Montréal · Repeat host

More work

All work →
Nora RideLanding page
Nora Ride2026
Spin bike coaching — conversion-focused
EternaClimbFull-stack
EternaClimb2025
AI-powered climbing training platform
TuVillaReal estate
TuVilla2025
Premium vacation home preparation

Have an idea that deserves a real product?

We build custom web, mobile, and commerce products full-stack — from first sketch to launch. Thirty minutes on a call is usually enough to see if we're a fit.

Book an intro call