PHPackages                             ironflow/ironflow - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Framework](/categories/framework)
4. /
5. ironflow/ironflow

ActiveLibrary[Framework](/categories/framework)

ironflow/ironflow
=================

A powerful modular framework for Laravel 12+ with advanced module management, service exposure, and lazy loading

v4.4.1(6mo ago)126MITPHPPHP ^8.2CI passing

Since Oct 5Pushed 6mo agoCompare

[ Source](https://github.com/ironflow-framework/ironflow)[ Packagist](https://packagist.org/packages/ironflow/ironflow)[ RSS](/packages/ironflow-ironflow/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (10)Dependencies (15)Versions (24)Used By (0)

 [![IronFlow Logo](./ironflow-logo.png)](./ironflow-logo.png)

 **A Powerful Modular Framework for Laravel 12+**

 [ ![Latest Version](https://camo.githubusercontent.com/79d8a39cd090ba8e02e1726ff5365144404194d7b8d1761eb052bc2b3b6d7fc3/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f69726f6e666c6f772f69726f6e666c6f77) ](https://packagist.org/packages/ironflow/ironflow) [ ![Total Downloads](https://camo.githubusercontent.com/dd1f0ab87dc01b8f5b18391b4ef39fa7da2af0c42db07dec33ff79e45d624255/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f69726f6e666c6f772f69726f6e666c6f77) ](https://packagist.org/packages/ironflow/ironflow) [ ![License](https://camo.githubusercontent.com/8278fe193a20fc29653621b9b2e4526036a917c50cad4b82894043744046370a/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f6c2f69726f6e666c6f772f69726f6e666c6f77) ](https://packagist.org/packages/ironflow/ironflow) [ ![GitHub issues](https://camo.githubusercontent.com/73ce13cae263d9730fd129136d7db026e5324278bf5d53924c9f8b99394da104/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6973737565732f69726f6e666c6f772d6672616d65776f726b2f69726f6e666c6f77) ](https://github.com/ironflow-framework/ironflow/issues)

---

About IronFlow
--------------

[](#about-ironflow)

IronFlow is a complete rewrite of the popular modular framework for Laravel. It enables you to build highly modular, maintainable, and scalable applications by organizing your code into isolated, self-contained modules.

### Why IronFlow?

[](#why-ironflow)

- **True Modularity**: Each module is completely isolated with its own routes, views, migrations, and services
- **Service Exposure**: Modules can expose services to other modules with fine-grained access control
- **Smart Lazy Loading**: Hybrid lazy loading optimizes boot time and memory usage
- **Dependency Management**: Automatic dependency resolution with circular dependency detection
- **Manifest Caching**: Lightning-fast module discovery in production
- **Laravel 12+ Ready**: Built for modern Laravel with PHP 8.2+ features

---

Requirements
------------

[](#requirements)

- **PHP**: 8.2 or higher
- **Laravel**: 12.0 or higher
- **Composer**: 2.0 or higher

Installation
------------

[](#installation)

### Existing Laravel Project

[](#existing-laravel-project)

```
composer require ironflow/ironflow
php artisan ironflow:install
```

### New Project

[](#new-project)

```
composer create-project ironflow/skeleton my-project
cd my-project
php artisan ironflow:install
```

---

Quick Start
-----------

[](#quick-start)

### 1. Create Your First Module

[](#1-create-your-first-module)

```
php artisan ironflow:module:make Blog
```

This generates a complete module structure:

```
├── BlogModule.php                    # Main module class
├── BlogServiceProvider.php           # Laravel service provider (optional)
├── Http/Controllers/                 # Controllers
├── Models/                           # Eloquent models
├── Services/                         # Business logic
├── Resources/views/                  # Blade templates
├── Database/Migrations/              # Database migrations
├── routes/web.php                    # Routes
└── config/blog.php                   # Configuration
```

### 2. Define Your Module

[](#2-define-your-module)

```
namespace Modules\Blog;

use IronFlow\Core\{BaseModule, ModuleMetaData};
use IronFlow\Contracts\{
  ViewableInterface,
  RoutableInterface,
  MigratableInterface
};

class BlogModule extends BaseModule implements
  ViewableInterface,
  RoutableInterface,
  MigratableInterface
{
  protected function defineMetadata(): ModuleMetaData
  {
      return new ModuleMetaData(
          name: 'Blog',
          version: '1.0.0',
          description: 'Complete blog with posts and comments',
          author: 'Your Name',
          dependencies: [
              'Users' => '^1.0',  // Semver constraints
          ],
          provides: ['BlogService', 'PostRepository'],
          path: __DIR__,
          namespace: __NAMESPACE__,
      );
  }
  public function expose(): array
  {
      return [
          'blog' => Services\BlogService::class,
          'posts' => Services\PostRepository::class,
      ];
  }
  // Interface implementations...
}
```

### 3. Discover and Boot Modules

[](#3-discover-and-boot-modules)

```
# Discover all modules
php artisan ironflow:discover

# List modules
php artisan ironflow:list --detailed

# Cache for production
php artisan ironflow:cache
```

### 4. Use Exposed Services

[](#4-use-exposed-services)

```
use IronFlow\Facades\Anvil;

// Resolve a service from any module
$blogService = Anvil::getService('blog.blog');
$posts = $blogService->getPublishedPosts();

// In controllers via dependency injection
class DashboardController extends Controller
{
    public function __construct(
        private BlogService $blogService
    ) {}

    public function index()
    {
        return view('dashboard', [
            'posts' => $this->blogService->getPublishedPosts()
        ]);
    }
}
```

---

Core Features
-------------

[](#core-features)

### 1. Module Lifecycle Management

[](#1-module-lifecycle-management)

Complete lifecycle with automatic state management:

```
UNREGISTERED → REGISTERED → PRELOADED → BOOTING → BOOTED
```

Each state is tracked, validated, and can trigger custom logic.

### 2. Service Exposure &amp; Resolution

[](#2-service-exposure--resolution)

**Public Services** (accessible by all modules):

```
public function expose(): array
{
   return [
       'blog' => Services\BlogService::class,
   ];
}
// Usage in any module
$blogService = Anvil::getService('blog.blog');
```

**Linked Services** (restricted access):

```
public function exposeLinked(): array
{
   return [
       'admin' => [
           'class' => Services\AdminService::class,
           'allowed' => ['Dashboard', 'Settings'],
       ],
   ];
}
```

### 3. Smart Lazy Loading

[](#3-smart-lazy-loading)

Hybrid loading strategy for optimal performance:

```
'lazy_loading' => [
   'enabled' => true,
   'eager' => ['routes', 'views', 'config'],  // Load immediately
   'lazy' => ['services', 'events', 'commands'], // Load on demand
]
```

### 4. Semantic Versioning

[](#4-semantic-versioning)

Full semver support with constraint validation:

- `^1.2.3` - Caret : `>=1.2.3 =1.2.3 =1.0.0` - Superior
- `=1.0 getName())->toBe('MyModule')
        ->and($module->getState())->toBe(ModuleState::UNREGISTERED);
});
```

Custom Expectations
-------------------

[](#custom-expectations)

```
expect($module)->toBeBooted();
expect($module)->toHaveState(ModuleState::BOOTED);
```

---

Interfaces
----------

[](#interfaces)

IronFlow provides several activatable interfaces:

### ViewableInterface

[](#viewableinterface)

Register and manage Blade views:

```
implements ViewableInterface
```

### RoutableInterface

[](#routableinterface)

Register web/API routes:

```
implements RoutableInterface
```

### MigratableInterface

[](#migratableinterface)

Manage database migrations:

```
implements MigratableInterface
```

### ConfigurableInterface

[](#configurableinterface)

Handle module configuration:

```
implements ConfigurableInterface
```

### SeedableInterface

[](#seedableinterface)

Database seeding support:

```
implements SeedableInterface
```

### ExposableInterface

[](#exposableinterface)

Expose services to other modules:

```
implements ExposableInterface
```

### ExportableInterface

[](#exportableinterface)

Export module:

```
implements ExportableInterface
```

---

Artisan Commands
----------------

[](#artisan-commands)

CommandDescription`ironflow:install`Install IronFlow in your project`ironflow:discover`Discover all modules`ironflow:cache`Cache module manifest for production`ironflow:clear`Clear module cache`ironflow:module:make {name}`Create a new module`ironflow:list [--detailed]`List all registered modules`ironflow:permissions:activate`Active permission system`ironflow:permissions:sync`Sync permissions to database`ironflow:publish {module}`Prepare for publishing`ironflow:version:bump {module} {type}`Bump version (major/minor/patch)---

Available Packages
------------------

[](#available-packages)

### Official Packages

[](#official-packages)

PackageDescriptionStatus`ironflow/ironflow`Core frameworkStable`ironflow/admin`Admin dashboardStable---

---

Example: Blog Module
--------------------

[](#example-blog-module)

Complete working example included in the repository:

```
namespace Modules\Blog;

use IronFlow\Core\{BaseModule, ModuleMetaData};
use IronFlow\Contracts\{
  ViewableInterface,
  RoutableInterface,
  MigratableInterface,
  ConfigurableInterface
}

class BlogModule extends BaseModule implements
    ViewableInterface,
    RoutableInterface,
    MigratableInterface,
    ConfigurableInterface
{
    // Define metadata
    protected function defineMetadata(): ModuleMetaData
    {
        return new ModuleMetaData(
            name: 'Blog',
            version: '1.0.0',
            description: 'Complete blog with posts and comments',
            author: 'IronFlow Team',
            dependencies: [],
            provides: ['BlogService', 'PostRepository'],
            path: __DIR__,
            namespace: __NAMESPACE__,
        );
    }

    // Register services
    public function register(): void
    {
        $this->app->singleton(Services\BlogService::class);
        $this->app->bind(Services\PostRepository::class);
    }

    // Boot module
    public function bootModule(): void
    {
        $this->loadTranslations();
    }

    // Expose services
    public function expose(): array
    {
        return [
            'blog' => Services\BlogService::class,
            'post-repository' => Services\PostRepository::class,
        ];
    }

    // Implement interfaces...
}
```

Features:

- ✅ Complete CRUD for posts
- ✅ Comment system
- ✅ Categories and tags
- ✅ SEO-friendly URLs
- ✅ View counters
- ✅ Blade templates
- ✅ Migrations and seeders
- ✅ Full test coverage

---

Contributing
------------

[](#contributing)

We welcome contributions! Please see [CONTRIBUTING.md](CONTRIBUTING.md) for details.

---

Security
--------

[](#security)

If you discover any security-related issues, please email `ironflow.framework@gmail.com` instead of using the issue tracker.

---

License
-------

[](#license)

IronFlow is open-sourced software licensed under the [MIT license](LICENSE.md).

---

Credits
-------

[](#credits)

Built with love by the Aure Dulvresse and amazing contributors.

- **Contributors**: [All Contributors](https://github.com/ironflow-framework/ironflow/graphs/contributors)

Special thanks to:

- Laravel community for inspiration
- All our contributors and sponsors
- Open source libraries we depend on

---

Links
-----

[](#links)

- **GitHub**: [github.com/ironflow/ironflow](https://github.com/ironflow-framework/ironflow)
- **Discord**: [discord.gg/ironflow](https://discord.gg/9Vy9Tz94j9)

- **Packagist**: [packagist.org/packages/ironflow/ironflow](https://packagist.org/packages/ironflow/ironflow)

---

Sponsors
--------

[](#sponsors)

Support IronFlow development:

 [ ![Sponsor](https://camo.githubusercontent.com/281bf0b4b397fd883c6ddd5d7e909ec7ca053fb7299c888c5d0f8601a67159e7/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f53706f6e736f722d49726f6e466c6f772d4541344141413f7374796c653d666f722d7468652d6261646765266c6f676f3d47697448756253706f6e736f7273266c6f676f436f6c6f723d7768697465) ](https://github.com/sponsors/ironflow-framework)

---

 **Build Better Modular Applications** Made with ❤️ by Aure Dulvresse

###  Health Score

38

—

LowBetter than 85% of packages

Maintenance68

Regular maintenance activity

Popularity8

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity58

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~1 days

Total

22

Last Release

193d ago

Major Versions

1.3.3 → v2.0.02025-10-11

v2.1.1 → v3.0.02025-10-14

v3.2.0 → v4.0.02025-10-23

PHP version history (2 changes)v1.0.0PHP ^8.3

v3.1.0PHP ^8.2

### Community

Maintainers

![](https://www.gravatar.com/avatar/34b2d64120e90ff9a631fe377dd251173cf50f8681674570b30fa0e1d9ed9576?d=identicon)[AureDulvresse](/maintainers/AureDulvresse)

---

Top Contributors

[![AureDulvresse](https://avatars.githubusercontent.com/u/147180124?v=4)](https://github.com/AureDulvresse "AureDulvresse (197 commits)")

---

Tags

frameworklaravelarchitecturemodulesmodularmicroservicesironflow

###  Code Quality

TestsPest

Static AnalysisPHPStan

Code StyleLaravel Pint

Type Coverage Yes

### Embed Badge

![Health badge](/badges/ironflow-ironflow/health.svg)

```
[![Health](https://phpackages.com/badges/ironflow-ironflow/health.svg)](https://phpackages.com/packages/ironflow-ironflow)
```

###  Alternatives

[laravel/pulse

Laravel Pulse is a real-time application performance monitoring tool and dashboard for your Laravel application.

1.7k12.1M99](/packages/laravel-pulse)[laravel/cashier

Laravel Cashier provides an expressive, fluent interface to Stripe's subscription billing services.

2.5k25.9M107](/packages/laravel-cashier)[roots/acorn

Framework for Roots WordPress projects built with Laravel components.

9682.1M97](/packages/roots-acorn)[laravel/lumen-framework

The Laravel Lumen Framework.

1.5k26.2M709](/packages/laravel-lumen-framework)[graham-campbell/markdown

Markdown Is A CommonMark Wrapper For Laravel

1.3k7.1M64](/packages/graham-campbell-markdown)[laravel/wayfinder

Generate TypeScript representations of your Laravel actions and routes.

1.7k4.1M69](/packages/laravel-wayfinder)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
