Laravel Passage v1.0.0 🎉
The first stable release of Laravel Passage.
Laravel Passage provides a flexible onboarding, checklist, journey, progression, and gated-experience engine for Laravel applications. Define multi-step passages, enroll any Eloquent model, track persistent progress, enforce prerequisites, automate completion, guide users to their next task, and manage the entire passage lifecycle.
✨ Features
- Fluent passage definitions
- Configuration-based passage definitions
- Required and optional steps
- Step prerequisites and dependency chains
- Automatic step completion conditions
- Conditional step visibility
- Named-route and direct-URL destinations
- Persistent passage enrollments
- Persistent step progress
- Progress percentage calculation
- Automatic next-step resolution
- Pending, in-progress, blocked, completed, expired, and cancelled passage states
- Pending, in-progress, completed, skipped, failed, and blocked step states
- Retry policies
- Maximum-attempt limits
- Passage deadlines
- Individual step deadlines
- Repeatable passages
- Passage cycle tracking
- Manual step completion
- Optional-step skipping
- Step failure tracking
- Administrative overrides
- Passage cancellation
- Passage restarting
- Automatic condition synchronization
- Middleware for completed passages
- Middleware for completed steps
- Middleware for next-step redirects
- JSON-friendly incomplete responses
- Passage reminders
- Passage expiration
- Definition and progress repair
- Enrollment and audit pruning
- Lifecycle events
- Audit history
- Optional actor attribution
- Metadata on definitions, enrollments, and steps
- Configurable models
- Configurable table names
- Integer subject-key support
- UUID and string subject-key support
- Eloquent model integration through
HasPassages - Laravel package auto-discovery
- Artisan installation and maintenance commands
- PHPUnit test suite
- PHPStan and Larastan static analysis
- Laravel Pint code formatting
- GitHub Actions continuous integration
🧭 Passage Workflows
Laravel Passage supports workflows such as:
- User onboarding
- Account setup
- Profile completion
- Product tours
- Compliance checklists
- Verification processes
- Training journeys
- Application workflows
- Approval processes
- Feature unlocks
- Progression systems
- Recurring reviews
- Gated application experiences
🛡️ Middleware
Laravel Passage includes middleware for:
- Requiring an entire passage to be completed
- Requiring an individual step to be completed
- Redirecting users to their next configured step
- Automatically enrolling eligible subjects
- Returning configurable JSON responses for incomplete passages
⏱️ Artisan Commands
Laravel Passage provides commands for:
- Installing package resources
- Running package migrations
- Synchronizing automatic conditions
- Expiring overdue passages
- Sending passage reminders
- Repairing stored progress
- Pruning retained enrollment and audit data
📣 Lifecycle Events
Laravel Passage dispatches events for:
- Passage enrollment
- Passage completion
- Passage expiration
- Passage cancellation
- Passage restart
- Passage reminders
- Step start
- Step completion
- Step skipping
- Step failure
📚 Documentation
Documentation is available in the docs/ directory and includes:
- Installation
- Core Concepts
- Defining Passages
- Using Passage
- Conditions and Automation
- Middleware
- Commands and Scheduling
- Events and Audit History
- Configuration
- Architecture
- Customization
- API Reference
- Complete Examples
- Testing
- Security
- Troubleshooting
✅ Supported Versions
- PHP 8.2+
- Laravel 12
- Laravel 13
🚀 Installation
Install the package through Composer:
composer require eloquent-works/passageThen install the package:
php artisan passage:installRun migrations:
php artisan migrateYou can also install and migrate in one command:
php artisan passage:install --migrateAdd the HasPassages trait to any Eloquent model that can participate in a passage:
use EloquentWorks\Passage\Traits\HasPassages;
class User extends Authenticatable
{
use HasPassages;
}❤️ Thank You
Thank you for trying Laravel Passage. Feedback, bug reports, feature requests, discussions, and pull requests are always welcome.