Skip to content
WORK

Hôtel des Grottes

Client
Hôtel Camping Restaurant des Grottes
Year
2026
Technologies
PHP JavaScript API JSON flatpickr Stripe Checkout
Hôtel des Grottes: Business solutions by e-Medias Group
THE PROJECT

A booking engine grafted onto an existing site.

Les Grottes brings together a campsite, a hotel and a restaurant in Réclère, in the Swiss Jura. Our work covers one thing only, the online booking engine: the rest of the site existed before us and is not ours.

That engine does more than post a form. It knows the real stock of every unit, turns away whatever does not fit the dates or the number of travellers, recalculates its total on every change, then hands the traveller over to Stripe for payment.

The engine on a phone: the three steps stacked, and the summary folded into a bottom bar.
The engine on a phone: the three steps stacked, and the summary folded into a bottom bar.
3
numbered steps, from picking dates to paying online
13
accommodation types managed, six in the hotel and seven on the campsite
7
summary lines recalculated on every change
Choosing a unit, filtered on dates and travellers: the engine tells a sold-out unit from the last one left.
Choosing a unit, filtered on dates and travellers: the engine tells a sold-out unit from the last one left.
01 · THE STAY

Dates and traveller counts filter the catalogue live.

Everything starts with a date range and two counters, adults and children under 16. On every change the engine queries availability, drops the units whose capacity does not fit, and states in one line how many are free and how many are full. The reminder about arrival and departure times sits right under the field, where the question comes up.

  • A French range calendar, open on two months, with a one-click reset of the dates.
  • An availability count rewritten on every change of dates or travellers.
  • Two safety rails: a horizon beyond which online booking closes, and a handover to the property for groups of more than six.
The stay calendar, localised in French, with the chosen range and the summary keeping up behind it.
The stay calendar, localised in French, with the chosen range and the summary keeping up behind it.
02 · THE OPTIONS

Breakfast is booked morning by morning, traveller by traveller.

The second step shows only the options tied to the chosen unit: breakfast never appears on hotel rooms, where it is already included. On the campsite units, every traveller gets their own row of mornings to tick, adults and children counted separately, and both the selection counter and the summary update on the tick.

  • Four billable options in the catalogue, attached unit by unit.
  • Two pricing modes for the unit, per night or per stay, and two units of measure for the options.
  • A grid of mornings per traveller, offering only the days actually served during the stay.
The options step: one row of mornings per traveller, and the summary following each tick.
The options step: one row of mornings per traveller, and the summary following each tick.
03 · DETAILS AND PAYMENT

The booking is held for as long as the payment takes.

The last step gathers the traveller's details, their country, their language and their acceptance of the terms and conditions, which open without leaving the page. They are also the details required to obtain the Jura-Pass. Moving to payment first creates the booking, with its reference and a time-limited hold, before handing the traveller over to Stripe. On the property side, an administration interface comes with the engine.

  • Seven countries and four languages to choose from in the form.
  • The terms and conditions in the page, with the cancellation scale recalled under the form.
  • Payment handed to Stripe, once the booking is referenced and held for the length of the transaction.
The last step before payment: details, country, language, terms and conditions, and the cancellation scale.
The last step before payment: details, country, language, terms and conditions, and the cancellation scale.
ALSO WORTH A LOOK

More projects to explore.

Shall we work together?

A project, a question, an ambition, let's talk. Reply within 24 hours, no strings attached.