Pratique

Fonction Réservations — Disponibilités, Acomptes, Google Agenda

Activez une fonctionnalité modulaire de réservation avec créneaux ouvrés, dépôt via Stripe Checkout, confirmation webhook, pièces jointes ICS et liens Google Agenda.

Réservations (Démo)

Fonction modulaire couvrant :

  • Disponibilités sur heures ouvrées avec marges et anti‑chevauchement
  • Réservation en attente jusqu’au paiement
  • Stripe Checkout pour acompte ou prépaiement
  • Confirmation via webhook
  • Email avec ICS joint
  • Lien “Ajouter à Google Agenda” (sans OAuth)
  • i18n : /:locale/reserve, /:locale/account/reservations

Mise en place

  1. Environnement & configuration côté code
NEXT_PUBLIC_FEATURE_RESERVATIONS_ENABLED=true
STRIPE_PRIVATE_KEY=sk_test_...
STRIPE_WEBHOOK_SECRET=whsec_...
RESEND_API_KEY=...
EMAIL_FROM="Votre App <no-reply@votre-domaine.com>"
NEXT_PUBLIC_WEB_URL="http://localhost:3000"

Ajustez les horaires, la durée de rétention et le fuseau horaire dans src/data/reservations.ts.

  1. Base de données
pnpm drizzle-kit generate --config src/db/config.ts
pnpm drizzle-kit migrate --config src/db/config.ts
  1. Webhook (local)
stripe listen --forward-to localhost:3000/api/pay/webhook/stripe
  1. Lancer
pnpm dev

Ouvrez /fr/reserve pour tester.

Personnalisation

  • Fuseau horaire : modifiez baseTimeZone dans src/data/reservations.ts (ex. Europe/Paris).
  • Acompte/prépaiement : deposit_amount, require_deposit par service.
  • Marges : buffer_before_min, buffer_after_min.
  • Agenda : lien Google sans OAuth ; pour une synchro fournisseur, ajoutez OAuth et l’API Calendar.