- What is adhenrique/laravel-domain-oriented used for?
- It is a Laravel package for structuring an application around business domains instead of technical layers such as controllers, models, and services spread across app/. Each domain keeps its own controllers, models, actions, routes, migrations, and service providers together, which helps large projects stay navigable. It also provides Artisan generators for scaffolding new domains and their components.
- How do I install adhenrique/laravel-domain-oriented?
- Install it with Composer using composer require adhenrique/laravel-domain-oriented, then publish any configuration and register the package service provider if your Laravel version does not auto-discover it. Before installing, check composer.json constraints against your target PHP and Laravel versions. The last release is from January 2022 and targets the Laravel 8/9 and PHP 7.4 to 8.1 window, so on newer Laravel versions you may need to fork or vendor the package.
- Does laravel-domain-oriented support Laravel 10, 11, or 12?
- There is no evidence that the package supports Laravel 10, 11, or 12. Its last release was January 2022, placing it in the Laravel 8/9 and PHP 7.4 to 8.1 era, and it has 11 stars with zero dependents, so there is no ecosystem pressure keeping it current. On newer Laravel versions, treat the repository as reference material and port the pattern rather than depending on the package.
- How are routes, migrations, and service providers registered per domain?
- The package auto-discovers per-domain routes, migrations, and providers, and uses domain-scoped service providers so each bounded context owns its own bootstrapping. Namespace and autoload wiring make domain classes work with Laravel's container and package discovery. Configurable conventions let you adapt the expected directory layout to your existing project structure.
- Can I customize domain namespaces and directory conventions?
- Yes. The package is built around configurable conventions, so you can adapt its expected namespaces and directory layout to match your existing project rather than forcing a full restructure. Namespace and autoload wiring are included so domains work seamlessly with Laravel. Because it encodes an opinion about where files live, review the conventions before rolling it out across an existing codebase.
- Is adhenrique/laravel-domain-oriented maintained or abandoned?
- It shows clear abandonment signals: roughly three and a half years without a release, a single maintainer, a low bus factor, and no observable security or CVE process. With 11 stars and zero dependents, there is no community corpus or downstream pressure to keep it current. The abstraction is thin, so the blast radius is bounded, but adoption should be treated as a fork-or-vendor decision rather than a routine Composer require.
- How does laravel-domain-oriented compare with using Laravel's native app/Domain structures?
- The package is a convention scaffold, not a runtime engine. You can replicate much of it with Laravel-native app/Domain/{Context} folders, plain service providers, Form Requests, and API Resources. Its value is the Artisan generators and base classes that enforce consistency, but it does nothing to help you decide where domain boundaries should be, so teams without domain-boundary experience may not gain much.
- What are the production risks of adopting laravel-domain-oriented?
- The main risks are version drift with current Laravel releases, loose semantic versioning, and the lack of a maintained test or security process. One patch release, v2.1.1, reportedly renamed a Resource field alongside widening ValidateService::getRules() to public, which is a signal to estimate future upgrade costs carefully. Check whether the package owns container bindings, middleware, exception handling, or route loading that would make removal non-trivial, and keep a removal plan.
- Does laravel-domain-oriented include tests, and how should I test domains built with it?
- There is no public evidence of a test suite that exercises the base classes; CI may only lint. Domains built with the package are still ordinary Laravel classes, so you can test controllers, actions, and validation services with PHPUnit or Pest as usual, including the public ValidateService::getRules() method. Run a short spike on your exact PHP and Laravel versions before committing to the convention.
- What base classes must my application extend, and how hard is it to remove the package later?
- Application classes extend a small set of package base classes, such as domain resources and validation services, and rely on domain-scoped service providers and auto-discovered routes and migrations. Because the surface is small and MIT-licensed, the low-effort removal path is to vendor the base classes and stubs into app/Domain/Support and drop the dependency. Assign an internal owner for that fork and document the exit plan before adoption.