Availabilities & Appointments
Describe working hours, blocked periods and bookings with a fluent API.
Today
Cleaning • 45 min
Sterilization • 15 min
Root Canal • 1h 30min
Open-source schedule engine for Laravel
Flexible schedule management for modern Laravel applications.
Install in seconds
Zap is a focused calendar engine for schedules on your existing models.
Publish migrations
php artisan vendor:publish --tag="zap-migrations"
Run the migrations
php artisan migrate
Add the schedulable trait
use HasSchedules
composer require laraveljutsu/zap
Built for real scheduling problems
Zap keeps scheduling rules in one place so your app stays predictable.
Describe working hours, blocked periods and bookings with a fluent API.
Define which schedules may overlap and let Zap handle conflicts.
Generate bookable slots with flexible durations, gaps and filters.
Real-world use cases
Zap focuses on generating and validating time slots for your models.
Doctor appointments
Model office hours and blocked days so Zap returns only bookable slots.
Meeting rooms
Keep meeting rooms and shared spaces conflict‑free by design.
Shift management
Describe shifts and time off once, then query who is available.
use Zap\Facades\Zap;
Zap::for($doctor)
->named('Office Hours')
->availability()
->forYear(2025)
->addPeriod('09:00', '12:00')
->addPeriod('14:00', '17:00')
->weekly(['monday', 'tuesday', 'wednesday', 'thursday', 'friday'])
->save();
// Get bookable slots
$slots = $doctor->getBookableSlots('2025-01-15', 60, 15);
// Check if a specific time is bookable
$isAvailable = $doctor->isBookableAt('2025-01-15', '15:00', 60);
API & quick start
Attach schedules to your models and let Zap answer what is available.
Zap provides a simple, fluent API to attach schedules to any model in your application. You can define availability periods, set recurring weekly patterns, and query available time slots with just a few method calls.
Zap handles all the complex time logic behind the scenes, so you can focus on building your UI and routes.