Installation
Install via Composer
composer require robyconte/filament-flowThe package will automatically register its service provider.
Publishing Migrations
To publish the migrations so they are visible and executable in your main application, run:
php artisan vendor:publish --provider="RoBYCoNTe\\FilamentFlow\\FilamentFlowServiceProvider" --tag="filament-flow-migrations"This will copy all plugin migrations to your database/migrations directory.
Alternatively, if you want to load migrations automatically without publishing them, the plugin will load them automatically on every migrate command.
Run migrations (optional, required only for database-driven workflows):
php artisan migrateThis will create the following tables:
workflows— Workflow definitionsworkflow_states— State definitionsworkflow_transitions— Transition configurationsworkflow_field_permissions— Field-level permissionsworkflow_assignments— User/team assignmentsworkflow_notifications— Notification configurationsworkflow_transition_history— Audit trailworkflow_state_access_rules— State-based access control rules
Publishing Configuration
php artisan vendor:publish --tag="filament-flow-config"This creates config/filament-flow.php with all configurable options. See Configuration Options for the full reference.
New to Spatie Laravel Model States? Read their introduction first to understand states, transitions, and the state pattern.
Frontend Integration (Tailwind CSS)
If your Filament panel uses a custom theme with Tailwind CSS v4, the package's views and PHP files must be included in your CSS source scan. Add these directives to your panel's theme.css:
@source '../../../../vendor/robyconte/filament-flow/resources/views/**/*';
@source '../../../../vendor/robyconte/filament-flow/src/**/*.php';Adjust the relative path to match the location of your theme.css file. After adding the directives, rebuild your assets: npm run build
Spatie Laravel Permission (Optional)
Filament Flow integrates automatically with Spatie Laravel Permission if it is installed. Role and permission checks use hasRole() and hasPermission() from the package without any additional configuration.
If Spatie Permission is not installed, the package falls back to checking a role attribute on the user model or using custom RoleResolver/PermissionResolver implementations (see Contracts).