daniel-cintra/modular
A Laravel package for building modular applications: organize features into self-contained modules with their own routes, controllers, models, migrations, views, config, and service providers while keeping a clean, maintainable project structure.
Architecture fit
The package is best understood as an opinionated application scaffold and code-generation toolchain for the Laravel + Inertia.js + Vue + Tailwind stack, organized around a module convention. That framing drives the entire assessment: it is a build-time dependency, not a runtime one. Once the scaffold is generated and committed, the resulting application code is owned by our team, and the package sits largely outside the production request path.
This is favorable for risk. It means architecture fit should be judged on two separate axes:
It is a poor fit for API-only services, Livewire-centric teams, React shops, or organizations with an established in-house Laravel starter template. In those cases the package competes with an internal asset we already control, and the incumbent should win by default.
Integration feasibility
Mechanically trivial — Composer install, scaffold, commit, remove or pin the dev dependency. The genuine feasibility questions are organizational rather than technical: whether the module boundary convention survives contact with our existing service layout, CI pipeline, static analysis rules, and code review standards. Budget for an adaptation pass on the generated output (linting, PHPStan/Psalm baselines, test harness, Docker/CI wiring) rather than assuming the scaffold drops in clean.
Technical risk
Key questions
app/ and resources/js/ layout?Stack fit
Strong fit if and only if the target service is a new Laravel application with a Vue/Inertia SPA front end and a team already fluent in that stack. The package adds no value to headless APIs, queue workers, or CLI tools — those should use a plain Laravel skeleton. Treat stack fit as a per-service gate, not an organizational standard.
Migration path
Two viable paths, and they should not be conflated:
dev dependencies for reproducibility, and treat the package as a one-time bootstrap. Do not plan to upgrade the dependency in place; plan to regenerate into a fresh branch and diff.There is no credible path where an established application is mechanically migrated onto this scaffold. Do not plan one.
Compatibility
Validate before committing to a pilot: PHP and Laravel versions against our platform baseline, Node/Vite versions against our build images, Inertia major version against any shared front-end component library, and Tailwind major version (v3 vs v4 is a meaningful divergence with real migration cost). Where the scaffold's pins conflict with our platform baseline, resolve in favor of the platform and document the delta.
Sequencing
The sequencing matters because step 3 is where most of the risk reduction happens, and it is also where teams routinely skip ahead.
Maintenance
Two distinct maintenance surfaces, and conflating them understates cost:
The realistic ongoing cost is not package upgrades; it is keeping the scaffolded conventions coherent as the framework ecosystem advances. Budget a recurring half-day per quarter per adopting team for dependency and convention drift review.
Support
Community-only. No vendor, no SLA, no paid tier. Internal ownership is mandatory: someone must be named as the owner of the internal template/ADR, or the convention will quietly fragment across teams within two quarters. Issue response times should be assumed to be unbounded.
Scaling
No runtime scaling implications — the package is not in the request path, so throughput, latency, and horizontal scaling are governed entirely by the application and infrastructure we build on top. The scaling impact is organizational: a shared module convention helps onboarding and cross-team consistency at 3–15 engineers, and can become friction at larger scale if module boundaries are namespace conventions rather than enforced contracts.
Failure modes
Ramp-up
Low for Laravel developers — the underlying stack is conventional and well-documented externally. The non-obvious cost is learning the module conventions specifically: where routes, controllers, models, and Inertia pages are expected to live, and how module registration works. Expect roughly one to two days for a mid-level Laravel engineer to be productive, contingent on internal documentation that the package will not provide. Front-end engineers familiar with Inertia need minimal ramp-up; those without Inertia experience need the standard adjustment to server-driven routing and page-props data flow.
Recommendation
Adopt as a greenfield bootstrap only, with a timeboxed spike, a single-service pilot, and a deliberate plan to internalize the output as an org-owned template. Do not add it to production dependencies, do not attempt brownfield migration, and do not treat it as a long-lived dependency. On that basis the governance risk is bounded and the time-to-first-feature upside is real; absent the internalization step, the risk-to-reward ratio degrades materially.
How can I help you explore Laravel packages today?