Gastronomy & heritage

Les Halles de Lyon Paul Bocuse

Sixty traders, one venue: the site had to be a directory as much as a showcase.

Year
2026
Design & build
5 weeks
Stack
Next.js · React · Tailwind · Vercel
  • Information architecture
  • Design
  • Development
  • SEO

Demo version put online by Kayzen Web at a Vercel address; the final domain belongs to the client.

https://halles-paul-bocuse-master.vercel.app/
Home page of the Les Halles de Lyon Paul Bocuse website — Gastronomy & heritage, built by Kayzen Web
traders listed
60
Lighthouse accessibility
97/100
Lighthouse performanceBelow our target of 90: a directory of sixty traders with photos is heavy by nature; reducing that weight (deferred loading, more compact formats) is the priority job for the next iteration.
76/100
The starting point

What needed solving.

The background

Les Halles de Lyon Paul Bocuse bring together some sixty food businesses — butchers, cheesemongers, oyster sellers, pastry chefs, several of them Meilleurs Ouvriers de France (France's highest craft distinction). Food & Wine ranked the market the third best in the world.

The constraint

A website for a shared venue is pulled in two directions: if it only talks about the place, it helps no one find a specific trader; if it is only a directory, it loses everything that makes people want to come. It had to serve both the visitor discovering the place and the one searching for “the cheesemonger at Les Halles”.

The response

Two layers, one on top of the other. A narrative layer — history, photography, atmosphere — to make people want to come. A directory layer — 60 listings, filterable by trade, with location and opening hours — to be useful. The first brings people in; the second keeps them.

Measured, not claimed

The scores recorded at delivery.

Lighthouse scores for the live site. We publish them as they are: when one is low, its cause and the plan to fix it are set out below rather than glossed over.

PageSpeed
76
Performance: 76 out of 100
97
Accessibility: 97 out of 100
100
Best practices: 100 out of 100
92
Search engine optimisation: 92 out of 100
Design & art direction

Every design choice, and the reason for it.

  1. One listing per trader

    Trade, specialities, location within the market hall, opening hours. This information is almost always missing, and visitors end up wandering the aisles looking for it.

  2. Filtering by trade

    Butcher, cheesemonger, oyster seller, greengrocer, wine merchant, caterer. Visitors are not looking for a name but for a need; the filter follows the way people think about a market.

  3. Full-frame photography, in moderation

    Heritage deserves to be shown. The images are large and polished, but loaded progressively: the gallery does not slow down the cheesemonger listing you came for.

Project palette

  • Market red

    #9B2C2C

    Identity

  • Tile white

    #FAFAF8

    Background

  • Slate

    #2B2E33

    Text

  • Brass

    #B99247

    Rules and MOF medals

Type system

Display

Playfair Display

Body text

Inter 400

The heritage register calls for a serif; the directory calls for a dense sans-serif. The two coexist by zone, never within the same block.

Engineering

What's under the bonnet.

  • Next.js
  • React
  • Tailwind
  • Vercel
  1. A directory in structured data

    The 60 traders live in a typed dataset, the single source for the list, the filters, the map and the markup. A change of opening hours is made in one place only.

  2. Performance at 76: a trade-off we own

    The score is below our standards, and we document it rather than keep quiet about it: the heritage gallery is heavy. It is the first optimisation job identified — switching to AVIF and splitting the gallery more finely.

Search engine optimisation

How the site makes itself findable.

  1. One page per trade

    “Fromager Halles Paul Bocuse” (cheesemonger), “écailler Lyon” (oyster seller): each trade has its own hub page, capturing a search the home page cannot target.

  2. Markup for the venue and its traders

    The venue carries a Place node, each trader a linked LocalBusiness node. The hierarchy is explicit for search engines and AI assistants alike.

Accessibility

Usable by everyone.

Since June 2025, the European Accessibility Act has required digital accessibility from a large share of online services. We build it in at the design stage rather than retrofitting it.

  1. Filters and results announced

    Changing a filter updates a results counter in a live region. Without it, a blind user does not know the list has changed.

Site structure

What was delivered.

  • Home — the venue
  • The 60 traders — filterable directory
  • Pages by trade
  • History and heritage
  • Directions, opening hours, map
Method

How the project unfolded.

  1. Inventory

    The 60 traders, their trades, locations and opening hours.

  2. Architecture

    Narrative layer and directory layer, filters by trade.

  3. Design

    Heritage register, gallery, listings.

  4. SEO

    Trade pages, Place and LocalBusiness markup.

Questions

What we are often asked.

Because hiding it would not improve the site. The score is explained by a large heritage gallery, it is identified, and the optimisation plan is written. A portfolio that only shows its 95s teaches nobody anything.

The same high standards, for your website.

A free audit of your current site, a quote within 24 hours and written reasoning — like the case study you have just read. Pay in three interest-free instalments; local funding schemes checked before you sign.

Share