edulazaro/wireschedule
Self-hosted Calendly alternative for Laravel: define availability per event in config, let visitors book free slots via a drop-in Livewire component, and keep bookings in your own database. Themeable, no third-party services.

Self-hosted meeting scheduler for Laravel, a lightweight on-brand alternative to Calendly. Availability is defined in config, bookings live in your own database, and the UI is a Livewire component you drop anywhere. Part of the wire* family: themeable through the shared data-wire-theme attribute, visually coherent with wiremodal, wiretoast, wirecookies and wirebug.
composer require edulazaro/wireschedule
php artisan migrate
Import the CSS in your bundle:
@import '../../vendor/edulazaro/wireschedule/resources/css/wireschedule.css';
Drop the scheduler anywhere:
<x-wireschedule event="demo" />
Pick the theme once on <html> (shared with the rest of the family):
<html data-wire-theme="studio">
config/wireschedule.php: weekly recurring ranges (in the organiser's timezone), slot duration, buffer, how far ahead bookings are allowed and minimum notice.wireschedule_bookings table. The visitor's browser timezone is detected and used to display and store times; everything is persisted in UTC.(event_type, starts_at) index prevents double-booking, re-checked at confirm time to avoid races.php artisan vendor:publish --tag=wireschedule-config
'timezone' => 'Europe/Madrid', // organiser timezone
'ask' => ['phone' => true, 'notes' => true],
'notify' => ['to' => null], // organiser email notified on each booking (null = no notice)
'events' => [
'demo' => [
'label' => 'Demo',
'duration' => 30, 'buffer' => 0, 'days_ahead' => 21, 'min_notice' => 120,
'availability' => [
1 => [['10:00','14:00'], ['16:00','18:00']], // 1 = Monday ... 7 = Sunday
],
],
],
use EduLazaro\WireSchedule\Models\Booking;
Booking::ofType('demo')->confirmed()->upcoming()->orderBy('starts_at')->get();
$booking->booker; // polymorphic: who booked (User, ... or null for guests)
wireschedule-booked is dispatched on the Livewire component after a successful booking (with the id), so the host app can toast or track it.Wireschedule is supported by the following sponsors. Thank you for keeping it growing:
Created by Edu Lazaro
Wireschedule is open-sourced software licensed under the MIT license.
How can I help you explore Laravel packages today?