Laravel Zap logo

Today

November 24

2025
9:00 AM

🦷 Sarah Johnson

Cleaning • 45 min

Room 2 Dr. Smith
9:45 AM

🧹 Clean Up Room 2

Sterilization • 15 min

10:00 AM

🦷 Mike Chen

Root Canal • 1h 30min

Room 2 Dr. Smith

⚡ Laravel Zap

Open-source schedule engine for Laravel

Flexible schedule management for modern Laravel applications.

Fast & Flexible Recurring Events Laravel Native

Install in seconds

From composer install to bookable slots in three steps.

Zap is a focused calendar engine for schedules on your existing models.

  1. 1

    Publish migrations

    php artisan vendor:publish --tag="zap-migrations"

  2. 2

    Run the migrations

    php artisan migrate

  3. 3

    Add the schedulable trait

    use HasSchedules

composer
composer require laraveljutsu/zap

Built for real scheduling problems

A single engine for availabilities, conflicts and time slots.

Zap keeps scheduling rules in one place so your app stays predictable.

Availabilities & Appointments

Describe working hours, blocked periods and bookings with a fluent API.

Overlap rules & conflicts

Define which schedules may overlap and let Zap handle conflicts.

Time slots & buffers

Generate bookable slots with flexible durations, gaps and filters.

Real-world use cases

From doctors to meeting rooms to shift planning.

Zap focuses on generating and validating time slots for your models.

Doctor appointments

Clinic & telehealth booking

Model office hours and blocked days so Zap returns only bookable slots.

Meeting rooms

Rooms, pods & shared spaces

Keep meeting rooms and shared spaces conflict‑free by design.

Shift management

Teams, call rotations & support

Describe shifts and time off once, then query who is available.

quick-start.php
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

A tiny API for real calendars.

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.