explicitdev / laravel-onboarding
Define Laravel onboarding flows as code and track progress without scattered booleans.
Requires
- php: ^8.2
- illuminate/contracts: ^11.0|^12.0|^13.0
- illuminate/database: ^11.0|^12.0|^13.0
- illuminate/support: ^11.0|^12.0|^13.0
Requires (Dev)
- larastan/larastan: ^3.0
- laravel/pint: ^1.21
- mockery/mockery: ^1.6
- orchestra/testbench: ^9.0|^10.0|^11.0
- pestphp/pest: ^3.0|^4.0
- pestphp/pest-plugin-laravel: ^3.0|^4.0
README
Define onboarding flows as code. Track progress without scattered booleans.
Every Laravel product eventually grows a handful of profile_completed, invited_team, and seen_dashboard booleans. Laravel Onboarding turns that scattered state into versioned flow classes, persisted progress, lifecycle events, and UI helpers you can reason about.
composer require explicitdev/laravel-onboarding
php artisan vendor:publish --tag=onboarding-config
php artisan migrate
namespace App\Onboarding;
use App\Models\User;
use ExplicitDev\Onboarding\Flows\OnboardingFlow;
use ExplicitDev\Onboarding\Steps\Step;
class NewUserFlow extends OnboardingFlow
{
public function name(): string
{
return 'new-user';
}
public function subject(): string
{
return User::class;
}
public function steps(): array
{
return [
Step::make('complete_profile')
->title('Complete your profile')
->completedWhen(fn (User $user): bool => filled($user->name)),
Step::make('invite_teammate')
->title('Invite a teammate')
->completedWhen(fn (User $user): bool => $user->teammates()->exists())
->skippable(),
];
}
}
use App\Onboarding\NewUserFlow;
use ExplicitDev\Onboarding\Facades\Onboarding;
Onboarding::register(NewUserFlow::class);
$progress = Onboarding::for($user)->flow('new-user');
$progress->percentage();
$progress->nextStep();
Features
- Flows live in version control as PHP classes
- Multiple concurrent flows per user, team, or any Eloquent model
- Skippable and required steps with lifecycle hooks
- Persisted or live evaluation per flow
- Shared dashboard data service and admin dashboard presets
- Cached progress snapshots with mutation-aware invalidation
- Blade directives and basic, publishable Blade components
- Artisan tooling for operations and debugging
- MIT licensed
The free package intentionally keeps UI primitives simple: teams can use the headless progress API, publish the basic Blade views, and style the experience themselves. Polished dashboards, Filament/Nova panels, analytics, templates, and deeper integrations are good candidates for paid add-ons.
Commercial Add-Ons
The commercial add-on package family now exists as separate repos and has been validated internally through dogfood apps, GitLab tag pipelines, R2 release uploads, and the Explicit Development package registry:
explicitdev/laravel-onboarding-filamentfor Filament admin dashboards and progress managementexplicitdev/laravel-onboarding-uifor polished customer-facing Blade and Tailwind-friendly onboarding screensexplicitdev/laravel-onboarding-novafor Nova teamsexplicitdev/laravel-onboarding-backpackfor Backpack teamsexplicitdev/laravel-onboarding-blade-adminfor lightweight Blade/Livewire admin screens
The core package includes the shared dashboard data service and preset model used by those admin adapters. Read Admin dashboards and reports for the core API, config settings, section names, and paid-package customization hooks.
They are active and available for purchase through Explicit Development at explicitdev.com/packages. The Laravel Onboarding product page is explicitdev.com/packages/laravel-onboarding.
Documentation
Start with the documentation index:
- Installation
- Configuration
- Defining flows
- Defining steps
- Querying progress
- Testing with the package
- Admin dashboards and reports
- Commercial add-ons
Support
Open bugs, install questions, documentation gaps, and feature requests in:
explicitdev/laravel-onboarding-support- https://gitlab.com/explicitdev/laravel-onboarding-support
Testing The Package
composer test
composer analyse
composer format
Contributing
Please read CONTRIBUTING.md before opening an issue or merge request.
Security
Please review SECURITY.md for supported versions and vulnerability reporting.
Credits
- Explicit Development
- Inspired by earlier Laravel onboarding packages, especially
calebporzio/onboardandspatie/laravel-onboard
License
Laravel Onboarding is open-sourced software licensed under the MIT license.