Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Modular Laravel Package

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.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

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:

  • Greenfield fit — strong. For a new Laravel product with a Vue/Inertia front end, the package encodes a set of sensible defaults (routing, page resolution, asset pipeline, directory conventions) that would otherwise cost a team one to three weeks of internal debate and boilerplate. The value proposition is time-to-first-feature and convention uniformity, not novel capability.
  • Brownfield fit — weak to moderate. Retrofitting a module convention onto an existing Laravel application is a restructuring exercise with limited payoff. Existing apps should borrow conventions, not adopt the toolchain wholesale.

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

  • Governance and bus factor. 176 stars and a single named maintainer is the dominant risk. This is a small-audience package with no commercial backing and no observable support contract. That is acceptable for a scaffold — and unacceptable as a foundation we cannot replace.
  • Convention lock-in. The module structure becomes a de facto internal standard. If the maintainer's opinions diverge from ours in a future release, unwinding is a refactor, not a version bump.
  • Snapshot drift. Generated code is a point-in-time artifact. Laravel, Inertia, Vue, and Vite will all move; the scaffold will not move with them at the same cadence.
  • Transitive surface. In practice we inherit the security posture of whatever Laravel/Node dependency versions the scaffold pins, which is our responsibility to track regardless of the package's health.

Key questions

  1. Does the package function purely as a greenfield generator, or does it install runtime service providers and middleware that persist in production?
  2. What is the supported compatibility matrix — Laravel major versions, PHP version, Inertia v1 vs v2, Vue 3, Vite — and how is that matrix maintained and documented?
  3. Can we adopt the module convention incrementally, or does it assume it owns the entire app/ and resources/js/ layout?
  4. What is the maintainer's stated support window and release cadence, and is there any indication of succession or co-maintainers?
  5. Does the generated output include a test harness (Pest/PHPUnit, Vitest) and CI configuration, or is testing left entirely to us?
  6. How are module boundaries enforced — namespace convention only, or tooling (autoloading, route registration, static checks)?
  7. Are the underlying dependency versions pinned or floating at generation time?
  8. Is there a documented upgrade path between package versions, or is re-scaffolding the intended model?

Integration Approach

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:

  1. New services — direct adoption. Scaffold, commit the generated output as first-party code, pin the package version in 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.
  2. Existing services — convention borrowing only. Extract the module layout and naming rules as an internal ADR, implement by hand. Do not install the package. This captures most of the organizational benefit at near-zero dependency risk.

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

  1. Timeboxed spike (1–2 days). One engineer scaffolds a representative slice of a real feature — auth, one CRUD module, one Inertia page — inside our actual repo, CI, and container setup. Output: a delta list of what the scaffold gets right and what we must override.
  2. Pilot on a single low-risk greenfield service. Measure time-to-first-feature against the internal baseline. Explicitly measure the adaptation cost, not just the generation cost.
  3. [Optional] Internalize as a template repository. If the pilot validates, fork the generated output into an org-owned starter repo. This converts an external governance risk into an internal asset with a clear owner and removes the dependency entirely.
  4. Only then consider broader rollout. Do not standardize on the package itself — standardize on the fork.

The sequencing matters because step 3 is where most of the risk reduction happens, and it is also where teams routinely skip ahead.

Operational Impact

Maintenance

Two distinct maintenance surfaces, and conflating them understates cost:

  • The package — low effort if treated as a bootstrap artifact; high effort if the dependency is retained and upgraded in place.
  • The generated code — this is now first-party and carries the same maintenance burden as any hand-written application, plus the obligation to track upstream Laravel/Inertia/Vue/Vite releases that the scaffold will not track for us.

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

  • Upstream abandonment. Most likely failure. Mitigated by owning the generated code and, ideally, forking to an internal template before adoption spreads.
  • Ecosystem drift. A Laravel or Inertia major release lands; the scaffold lags; adopting teams diverge as each patches independently. This is the most probable practical failure and is entirely predictable.
  • Convention divergence. Multiple squads scaffold at different package versions and produce subtly incompatible layouts. Prevented only by pinning and by forking.
  • Security patch lag. Scaffolded dependency versions age out; teams must own CVE monitoring for the generated manifest independently of the package's release cadence.
  • Silent over-coupling. Teams begin treating the package as a runtime framework, adding it to production dependencies and awaiting upstream fixes. This is a governance failure, not a package failure.

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.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
shitoudev/permissionmanager
johannesclimacus/laravel-tui
hocvt/seotools
vitalybaev/sypexgeo
amphibee/themosis-ignition
gito-me/fast-excel
frankyso/laravel-ipaymu
geolize-studio/laravel-chile
boomerangui/chat
jinas/dhivatar
store-doc/laravel-storage-driver
plus-it/laravel-translation-manager
diephp/perhaps
diephp/telegraph
osmaviation/spreadsheet
microsoft/fluentui-system-icons
mmccook/php-json-canonicalization-scheme
middlewares/firewall
qubiqx/montapacking
nyoncode/laravel-package-console