Advanced State Machine implementation for Laravel applications. Declarative state management with support for conditions, actions, and complex workflows through YAML configuration.
- Overview
- β¨ Features
- π¦ Installation
- π Quick Start
- π Complete Documentation
- π‘ Examples & Use Cases
- π§ Requirements
- π§ͺ Testing
- π Performance
- π€ Contributing
- π Security
- π License
Laravel Statecraft is a powerful state machine implementation for Laravel that provides declarative state management through YAML configuration. Build complex workflows with conditional transitions, guards, actions, and comprehensive state tracking.
Perfect for order processing, user workflows, approval systems, and any application requiring sophisticated state management.
Laravel Statecraft is perfect for:
- Order Processing - Complex e-commerce order workflows
- User Registration - Multi-step user onboarding flows
- Approval Systems - Document or request approval workflows
- Content Management - Publishing and moderation workflows
- Business Processes - Any multi-state business logic
- π Declarative Configuration - Define state machines in YAML files
- π Flexible Transitions - Conditional transitions with guards and actions
- π― Event System - Built-in events for state changes and transitions
- π State History - Track all state changes with timestamps
- π‘οΈ Guards & Actions - Pre/post transition validation and processing
- π Model Integration - Seamless Eloquent model integration
- π YAML Support - Human-readable state machine definitions
- π¨ Artisan Commands - CLI tools for state machine management
- β Validation - Comprehensive state machine validation
- π Visualization - Export state machines to Mermaid diagrams
- π§ͺ Test-Friendly - Built-in testing utilities
- β‘ Performance - Optimized for speed with caching support
Detailed installation instructions are available in our wiki: π¦ Installation & Setup
Quick install via Composer:
composer require grazulex/laravel-statecraft
π‘ Auto-Discovery
The service provider will be automatically registered thanks to Laravel's package auto-discovery.
Publish configuration:
php artisan vendor:publish --tag=statecraft-config
Publish migrations (if using history tracking):
php artisan vendor:publish --tag=statecraft-migrations
php artisan migrate
For a complete getting started guide, visit: π Basic Usage Guide
php artisan statecraft:make OrderStateMachine --model=Order
# state-machines/OrderStateMachine.yaml
name: OrderStateMachine
model: App\Models\Order
initial_state: pending
states:
- name: pending
description: Order is pending payment
- name: paid
description: Order has been paid
- name: shipped
description: Order has been shipped
transitions:
- name: pay
from: pending
to: paid
guard: PaymentGuard
action: ProcessPayment
use Grazulex\LaravelStatecraft\HasStateMachine;
class Order extends Model
{
use HasStateMachine;
protected $stateMachine = 'OrderStateMachine';
}
// Create a new order (starts in 'pending' state)
$order = Order::create(['total' => 100.00]);
// Transition to next state
$order->transition('pay'); // Moves to 'paid' state
// Check current state
echo $order->currentState(); // 'paid'
Our comprehensive documentation is available in the GitHub Wiki:
- π YAML Configuration - Complete YAML syntax and options
- π‘οΈ Guards & Actions - Pre/post transition logic
- π― Events System - State change events and listeners
- π State History - Track and audit state changes
- βοΈ Configuration Guide - Package configuration options
- π¨ Console Commands - Artisan commands reference
- π§ͺ Testing Guide - Testing your state machines
- π Wiki Home - Complete documentation homepage
- π¦ Installation & Setup - Detailed installation guide
- π Basic Usage Guide - Step-by-step tutorial
Explore real-world implementations and patterns:
- π Examples Collection - Complete examples overview
- π¦ Order Workflow Example - E-commerce order processing
- π° Article Publishing Example - Content management workflow
- π³ User Subscription Example - Subscription lifecycle management
- π― Event Usage Example - Advanced event handling
- PHP 8.2 or higher
- Laravel 11.x or higher
- Optional: Redis for caching (recommended for production)
Comprehensive testing guide: π§ͺ Testing Guide
composer test
composer test:coverage
composer test:types
Laravel Statecraft is optimized for production use with caching support and minimal overhead. See our βοΈ Configuration Guide for performance optimization tips.
We welcome contributions! Please see CONTRIBUTING.md for details.
Before contributing:
- Read our Code of Conduct
- Check the issue tracker
- Review our π Complete Documentation
If you discover a security vulnerability, please send an e-mail via the security policy. All security vulnerabilities will be promptly addressed.
Laravel Statecraft is open-sourced software licensed under the MIT license.
Made with β€οΈ for the Laravel community
- CODE_OF_CONDUCT.md - Our code of conduct
- CONTRIBUTING.md - How to contribute
- SECURITY.md - Security policy
- RELEASES.md - Release notes and changelog