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

Ddd Bundle Laravel Package

netteam/ddd-bundle

Netteam DDD Bundle provides a domain-driven design foundation for Laravel/PHP applications, offering shared building blocks and conventions to organize domain, application, and infrastructure layers cleanly.

View on GitHub
Deep Wiki
Context7

Product Decisions This Supports

  • Build vs. buy for domain-modeling primitives. This bundle packages DDD tactical patterns — aggregate roots, entities, value objects, domain events, repository abstractions, and command/query bus wiring — into a Symfony-integrated foundation. The PM decision it informs is whether we buy a third-party DDD layer, adopt a maintained framework, or write a thin internal abstraction (~a few hundred lines) we own outright. My read: this package does not change that decision in favor of buying.
  • Architecture standardization. Useful as a reference point when deciding whether to enforce a shared DDD vocabulary (aggregate roots, domain events, CQRS-style command/query separation) across squads, or let teams pick their own patterns. The bundle illustrates one coherent convention set — but it is Symfony-shaped, so it constrains the answer to a Symfony stack.
  • Stack fit is a gating decision, not a detail. Despite being filed as a "Laravel/PHP package," this is a Symfony bundle with no ServiceProvider, no config/ddd.php, and no auto-discovery. For any Laravel roadmap — which is most of ours — this is a mis-specified candidate. The only honest use is as prior art or pattern donor, never as a Composer dependency on a critical path.
  • Dependency risk as a procurement signal. Zero stars, zero dependents, no known production users. For a PM, that is decision-grade input on the build vs. buy vs. fork tradeoff: adopting it means we are effectively adopting a fork on day one, with all the standing maintenance tax that implies.
  • Roadmap and resourcing. If the domain-modeling layer is on the roadmap, the decision this supports is "allocate a small platform-team effort to an internal package with a versioned contract," not "pick up this bundle and save the sprint." The bundle is a design reference that can de-risk the first sprint of an internal build — that is its real product value.

When to Consider This Package

Consider it only under narrow, time-boxed conditions:

  • You are on Symfony, already aligned with NetTeam conventions or inheriting a legacy codebase that depends on it, and need to keep an existing integration alive.
  • You need reference material. Reading the source to see how aggregates, events, and repositories wire into a framework container is legitimate and free. Treat it as documentation, not as a dependency.
  • You are doing a short, throwaway spike — two to three days, one non-critical bounded context, one aggregate with one invariant and one recorded event, round-tripped end to end. If the spike needs more adapter code than domain code, stop and build internally.

Look elsewhere when:

  • Maintenance and support matter. No visible maintainer, no release cadence, no security response channel, no upgrade path across framework majors. A zero-dependent repository will not clear third-party risk review without an explicit exception and a named internal owner.
  • You are on Laravel — which is our default. The bundle's value is inseparable from Symfony's bundle lifecycle, service tagging, and configuration tree. Use Laravel's container, events, and queues, or evaluate maintained options (EventSauce, Ecotone).
  • You need production guarantees. Prefer maintained libraries with active releases, or a small internal abstraction the platform team owns and can evolve.
  • You need event sourcing or CQRS at scale. Purpose-built, actively maintained frameworks are the safer bet; this bundle also does not appear to offer a transactional outbox, so delivery guarantees would be ours to build.

How to Pitch It (Stakeholders)

To executives: We evaluated netteam/ddd-bundle and recommend not adopting it. Two facts decide it. First, it is a Symfony bundle, not a Laravel package — it cannot be wired into our stack without re-implementing its framework glue, which erases most of the "buy" savings. Second, it has zero stars and zero dependents: no external users to surface bugs, no security patching, no upgrade path. The strategic value of DDD comes from our modeling discipline and our team's shared vocabulary, not from this dependency. Adopting an unmaintained bundle converts an architecture choice into a standing maintenance liability with no vendor and no SLA.

To engineering: This is a coherent, small, well-shaped set of DDD primitives — aggregates that own invariants, value objects, repository abstractions decoupled from Doctrine internals, domain events buffered on the aggregate and released after persist, and DI wiring for command/query handlers. That design intent is worth stealing. The framework glue is not. Recommended path: run a two-to-three day spike in one non-critical bounded context, vendor the pattern vocabulary into an internal acme/ddd-core package under our own namespace, and replace Symfony-coupled internals with Laravel-native equivalents — service providers for wiring, Laravel events or a dedicated bus for dispatch, our own repository contracts. Persist before releasing events so a DB failure cannot emit a phantom event, and assume we build the outbox ourselves if we need delivery guarantees. Treat the upstream repo as reference documentation, not a versioned dependency.

Recommendation: Decline adoption; retain as reference only. Revisit the DDD tooling decision against maintained alternatives and a small internal proof of concept before committing any roadmap capacity — and confirm the license permits vendoring before the spike begins.

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.
uni-method/symfony-lib
tacticmedia/scim-server-bundle
neika-ai/symfony-bundle
mattleads/agent-publishing-bundle
glavweb/framework-bundle
glavweb/extra-bundle
glavweb/api-bundle
glavweb/admin-bundle
adachsoft/api-version-bundle
elsayed85/laravel-api-exceptions
ouhssini/laravel-demo-mode
daworks/ncloud-outbound-mailer-driver
gp247/cms
ignibyte/aic-gates
nexa-merchant/blog
novasa/laravel-language-center
opencage/geocode
adolfoholzer/parameters
livenetworks/ln-starter
cgv/localized-resource