All projects

Client project · Booking website · 2026 · launch in progress

Villa Léopold

The direct booking website of a villa with a pool in Bordeaux: guests book and pay online, with no Airbnb fees, and the calendar stays in sync with Airbnb.

Home page of the Villa Léopold website
Accessibility (Google PageSpeed, mobile)
100/100
SEO (Google PageSpeed, mobile)
100/100
languages: English and French
2

Context

Lucas Delcros rents out his villa with a pool in the Primerose district of Bordeaux on Airbnb, where he is a Superhost rated 4.96/5. Almost all of his guests are British. Airbnb takes around 15% of every stay: he wanted a website in his own name so that his guests, especially returning ones, book directly.

Challenges

  • Inspire as much trust as Airbnb in a guest who pays several thousand euros to a private owner.
  • Never let the same nights twice, while the villa also stays on Airbnb.
  • Let the owner manage everything himself (rates, calendar, photos, bookings) without touching the code.

What was built

  • Online booking and payment

    Availability calendar and itemised price (nights, cleaning, tourist tax). The guest sends a request; once accepted, they receive a Stripe payment link valid for 48 hours. Deposit on payment, balance charged automatically before arrival, card saved for the security deposit.

  • Airbnb sync

    The website and Airbnb calendars exchange their dates both ways (iCal). The Airbnb calendar is read again just before every payment, to rule out any double booking.

  • Owner area

    Bookings (balance, cancellation, refund, security deposit), blocked dates, seasonal rates, photos, reviews and FAQ are managed from a single-account admin area, in French.

  • English and French

    English website for the British guests, French version under /fr, currency switcher. Emails and the payment page are shown in the guest’s language.

Under the hood

  • Price calculation, dates, availability and iCal parsing isolated in pure functions, covered by automated tests (Vitest).
  • Stripe Checkout with a webhook, deferred balance charge and a security deposit with no upfront charge.
  • Bot protection (Vercel BotID) on booking and contact, rate limiting on the admin login.
  • Neon PostgreSQL database with Drizzle ORM, photos on Vercel Blob, hosted in the London region, close to the guests.