edulazaro/wireschedule
Composer 安装命令:
composer require edulazaro/wireschedule
包简介
Self-hosted meeting scheduler for Laravel (a Calendly alternative). Config-driven availability, own database, Livewire UI. Themeable through the wire* family — shares look with wiremodal, wiretoast, wirecookies and wirebug.
README 文档
README
Wireschedule
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.
Requirements
- PHP 8.2+
- Laravel 11+
- Livewire 3
Installation
composer require edulazaro/wireschedule php artisan migrate
Import the CSS in your bundle:
@import '../../vendor/edulazaro/wireschedule/resources/css/wireschedule.css';
Usage
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">
How it works
- Availability is declared per event type in
config/wireschedule.php: weekly recurring ranges (in the organiser's timezone), slot duration, buffer, how far ahead bookings are allowed and minimum notice. - Free slots are computed as that availability minus the bookings already in your
wireschedule_bookingstable. The visitor's browser timezone is detected and used to display and store times; everything is persisted in UTC. - No third party: lead data stays in your database. A unique
(event_type, starts_at)index prevents double-booking, re-checked at confirm time to avoid races.
Config
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 ], ], ],
Reading bookings
use EduLazaro\WireSchedule\Models\Booking; Booking::ofType('demo')->confirmed()->upcoming()->orderBy('starts_at')->get(); $booking->booker; // polymorphic: who booked (User, ... or null for guests)
Events
wireschedule-bookedis dispatched on the Livewire component after a successful booking (with theid), so the host app can toast or track it.
Sponsors
Wireschedule is supported by the following sponsors. Thank you for keeping it growing:
Author
Created by Edu Lazaro
License
Wireschedule is open-sourced software licensed under the MIT license.
统计信息
- 总下载量: 0
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 1
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2026-07-12
