ibecsystems/laravel-porto
A Laravel package for building applications with Porto architecture. It helps organize code into Containers, Ship, and Components, with Artisan scaffolding for modular, domain-focused development that stays clean and maintainable as projects grow.
Architecture fit. The package is a scaffolding/architecture-enablement tool for the Porto pattern (container-based layered architecture: app/Containers/{Section}/{Container}/{UI, Actions, Tasks, Models, Data, Values}). It is not a runtime library so much as a convention + generator layer. That fits cleanly inside a Laravel monolith or modular monolith where you want domain-per-container ownership, but it deliberately diverges from stock Laravel layout (app/Models, app/Http/Controllers). Fit is good for greenfield or new bounded contexts; poor as a retrofit over an existing conventional Laravel app.
Integration feasibility. Technically low-risk to pilot: composer require --dev, publish config/stubs, run Artisan generators. Expect PSR-4 namespace additions (e.g., App\Containers\) and optional per-container service providers for routes/events. There is no meaningful production runtime surface, so the blast radius of trying it is small — this is the main reason it is worth a spike at all.
Technical risk. High from a supply-chain and longevity standpoint, low from a security standpoint:
Key questions to answer before adoption.
composer.json constraints for PHP and laravel/framework? Does it install on our current LTS?laravel-modules, or Mahmoud Zalt's Porto work? If so, which upstream should we track?Stack fit. Appropriate for PHP 8.x + Laravel 10/11 teams building a modular monolith, especially where multiple squads will own separate containers. Complements Inertia/Livewire/API-first builds; neutral to frontend choice. Conflicts to check: don't run it alongside laravel-modules or Apiato in the same tree — overlapping module/container conventions will confuse autoloading and route registration.
Migration path. Treat this as a dev-only tool and avoid a big-bang refactor:
app/ structure untouched.Compatibility. Verify Composer constraints and run composer why-not against our Laravel version. Confirm namespace additions don't collide with existing PSR-4 roots, that generated service providers work under route:cache/config:cache, and that CI (Pint, PHPStan, Pest) passes on generated code. Check that generated classes are picked up by classmap authoritative autoloading.
Sequencing.
Maintenance. With 1 star and 0 dependents, assume we are the maintainers. Pin the exact version, mirror the source internally, and budget a small recurring cost for stub updates on each Laravel major. The pattern's ongoing cost is larger than the package's: conventions must be policed or they decay.
Support. No upstream support channel, no issue-tracker SLA. Internal documentation and an owner (platform/architecture guild) are mandatory before rollout. Without that, the pattern becomes tribal knowledge.
Scaling. Organizationally, Porto scales well — container ownership maps to team ownership, and the package's scaffolding reduces boilerplate at container creation time. Technically, negligible runtime impact; watch classmap/autoload performance and route-provider proliferation as container count grows into the dozens.
Failure modes.
Ramp-up. The package is trivial to learn; the pattern is the ramp-up cost. Expect 1–2 weeks for a mid-level Laravel developer to be productive, plus a half-day workshop and a written convention guide. Budget architecture-review time for the first few containers; after that, generation + review is fast.
TPM recommendation. Do not take this as a production-critical dependency at 1 star / 0 dependents / score 0.105. Its value is as a reference implementation and stub source, not as a trusted vendor. Run a one-week spike, and if Porto fits the org, vendor or fork the stubs internally — that captures the productivity gain while removing the single-maintainer and version-drift risk. Evaluate Apiato or laravel-modules as better-supported alternatives if you need an actively maintained ecosystem.
How can I help you explore Laravel packages today?