The Laravel Zap package is a flexible schedule management system with a deep Laravel integration. With Zap, you can create calendar schedules for Eloquent models for things like events, appointments, recurring events, and more:
use Zap\Facades\Zap; // Weekly team meeting$meeting = Zap::for($user) ->named('Team Standup') ->from('2025-01-01') ->to('2025-12-31') ->addPeriod('09:00', '09:30') ->weekly(['monday', 'wednesday', 'friday']) ->save();
Part of working with schedule management is performing queries to check for model availability, getting the next available slot, dealing with schedule conflicts, etc.:
// Check availability$available = $user->isAvailableAt('2025-03-15', '14:00', '16:00'); // Get available slots$slots = $user->getAvailableSlots( date: '2025-03-15', dayStart: '09:00', dayEnd: '17:00', slotDuration: 60); // Check for conflicts$conflicts = Zap::findConflicts($schedule); // Get schedules for date$todaySchedules = $user->schedulesForDate(today());
This package could be ideal for appointment booking systems, meeting room management, employee shift management, and other schedule-based applications.
Main Features
- Eloquent Integration - User HasMany Schedules with period-based scheduling
- Business Rules Engine - Configurable validation with Laravel integration
- Temporal Operations - Carbon-based date/time manipulation with timezone support
- Smart Conflict Detection - Automatic overlap checking with customizable buffers
- Recurring Schedules - Support for daily, weekly, monthly, and custom patterns
- Availability Management - Intelligent time slot generation and conflict resolution
- Laravel Native - Facades, service providers, events, and configuration
- Developer Experience - Fluent API, comprehensive testing, and clear documentation
👨💻 Check it out on GitHub: ludoguenet/laravel-zap