← Retour à la marketplaceVoir les projets →
📅
Réservation
⭐ RecommandéSystème de réservation en ligne avec créneaux, disponibilités et confirmations.
PlanningComplexe~12 joursv1.1.0
Moteur de réservation flexible : gestion des ressources (salles, personnel, équipements), créneaux de disponibilité, réservation en ligne, confirmations automatiques, annulations et liste d'attente.
bookingavailabilitycalendarslotsresources
Dépendances requises :
📋 Schéma Prisma
// === Module Réservation ===
enum BookingStatus {
PENDING
CONFIRMED
CANCELLED
NO_SHOW
COMPLETED
}
model Resource {
id String @id @default(cuid())
name String
type String // room, person, equipment
capacity Int @default(1)
isActive Boolean @default(true)
description String?
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
availabilities Availability[]
bookings Booking[]
@@map("resources")
}
model Availability {
id String @id @default(cuid())
resourceId String
resource Resource @relation(fields: [resourceId], references: [id], onDelete: Cascade)
dayOfWeek Int // 0=lundi...6=dimanche
startTime String // "09:00"
endTime String // "18:00"
isActive Boolean @default(true)
@@map("availabilities")
}
model Booking {
id String @id @default(cuid())
resourceId String
resource Resource @relation(fields: [resourceId], references: [id])
contactName String
contactEmail String
contactPhone String?
startsAt DateTime
endsAt DateTime
status BookingStatus @default(PENDING)
notes String?
confirmToken String? @unique
cancelToken String? @unique
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
@@map("bookings")
}🔌 Endpoints API
## API Réservation GET /api/resources # Liste des ressources POST /api/resources # Créer une ressource PUT /api/resources/:id/availability # Définir les disponibilités GET /api/availability?resourceId=&date= # Créneaux dispo pour une date POST /api/bookings # Créer une réservation GET /api/bookings # Liste (filtres: resource, status, date) GET /api/bookings/:id # Détail PUT /api/bookings/:id/confirm # Confirmer PUT /api/bookings/:id/cancel # Annuler GET /api/bookings/confirm/:token # Confirmation par lien email GET /api/bookings/cancel/:token # Annulation par lien email
🛠️ Guide d'implémentation
## Implémentation Réservation ### Étape 1 — Modèles et disponibilités Intégrer les modèles. Implémenter l'algorithme de calcul des créneaux libres. ### Étape 2 — Moteur de disponibilité Créer src/lib/booking/availability.ts : - Calculer les créneaux libres pour une ressource et une date - Vérifier les conflits avant création - Gérer les durées paramétrables ### Étape 3 — Workflow de réservation - Création → email confirmation avec lien - Confirmation → email de rappel J-1 - Annulation → libération du créneau ### Étape 4 — Widget public (optionnel) Créer une page publique /book/:resourceSlug pour permettre la réservation sans connexion.
Prêt à installer ce module ?
Ajoutez-le à un projet existant depuis la page modules du projet.