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

Symfony Bundle Laravel Package

xm/symfony-bundle

XM Symfony Bundle provides a Symfony integration layer for XM, including bundle registration, service definitions, and autowiring support, making it easy to add XM features to Symfony applications with minimal configuration.

View on GitHub
Deep Wiki
Context7

Product Decisions This Supports

Build vs. buy for an event-sourced backend. This bundle is effectively a "buy the internal standard" option: aggregates, commands/domain events, repositories, projections, Doctrine read models, GraphQL mutations/queries, and metadata enrichment (issuer, causation, IP, user agent) arrive pre-wired on Prooph. For a team about to hand-roll CQRS/ES, it converts a multi-sprint platform bet into an integration task — a decision that belongs in the roadmap review, not a sprint.

Time-to-market on new domain modules. make:model scaffolds the full vertical slice (aggregate, 3 commands, 3 events, handlers, repository, projection, read model, Doctrine entity/finder, GraphQL types + single/list/count queries + mutations, tests, YAML config). That gives you a defensible estimate for "add a new bounded context": hours of scaffolding plus a fixed 7-step manual wiring checklist (event stream creation, projection config, App\Projection\Table, RunProjectionMiddleware mapping, permissions, schema dump). Use it to size epics and to argue for investment in reducing that manual tail.

Platform standardization. Choosing this locks the product to Symfony + Prooph + Overblog GraphQL — not Laravel. If the org is Laravel-first, this is an explicit "we are running (or will run) a Symfony service" decision, with hiring and on-call implications.

Ops/roadmap de-scoping. Two baked-in capabilities are roadmap items teams usually fund separately: Maintenance Mode (file-triggered, no deploy, survives a non-booting app via front-controller gate, IP/CIDR + key bypass, GraphQL MAINTENANCE code with extensions.until, paused Messenger workers) and Session Expiry (idle logout matching gc_maxlifetime, remember-me aware, per-route _extend_session: false). Both can be cut from the backlog if this is adopted; both become migration scope if it is dropped.

API contract with frontend. Apollo-style extensions.code (UNAUTHENTICATED, FORBIDDEN, NotFoundError, LinkExpiredError, TooManyRequestsError, MAINTENANCE) plus schema-leak protection for anonymous users is a client-facing contract decision. The frontend must own a code list; that is a cross-team dependency to schedule, not a backend detail.

Vendor/dependency risk register. 0 stars, 0 dependents, "used at XM Media," no public docs beyond agent notes. This is an unvalidated single-vendor dependency; the PM decision is adopt-with-a-fork-plan, and the fork cost (reading source, owning Prooph upgrades) must be priced into the business case. Also verify the release metadata — the stated last release (2026-10-28) is out of sequence and should be confirmed before it appears in any roadmap artifact.

When to Consider This Package

Adopt when:

  • The service is Symfony (PHP 8.1+, strict types, constructor injection, PHPUnit 13 + Mockery) — the codebase conventions are non-negotiable and will leak into yours.
  • You have deliberately chosen event sourcing + CQRS and are comfortable with Prooph as the event store; you have (or will hire) at least one engineer who has shipped ES in production.
  • Your read/write split is real: projections into Doctrine entities, GraphQL reading the read model, Messenger carrying commands.
  • You need the operational surface (maintenance mode, session expiry, GraphQL error codes) and would otherwise build it.
  • You accept owning the source: vendor it or fork it, pin a commit, and treat upstream as advisory. Budget for Prooph/Symfony major-version catch-up.
  • You want the make:model scaffolding dividend and will invest in shrinking the manual post-generation checklist.

Look elsewhere when:

  • The stack is Laravel — effectively only the isolated utilities (ContentDisposition, PasswordStrength, StringUtil, Faker providers) are portable, and copying them is cheaper than adopting the bundle.
  • You need community support, published docs, an SLA, semantic-versioning guarantees, or a security-response process. Zero stars and zero dependents mean no ecosystem safety net.
  • You only need ES/CQRS and would rather compose maintained pieces (Symfony Messenger + a maintained event store, EventSauce, or Broadway) without inheriting an opinionated all-in-one.
  • Your team is small or ES-inexperienced: the failure mode is a projection/event-stream drift incident nobody can debug.
  • You need framework-agnostic domain code — this bundle's base classes (AggregateRoot, DomainMessage, UuidId, ValueObjectCollection) are a one-way door into Xm\SymfonyBundle\.

How to Pitch It (Stakeholders)

For executives (one paragraph): This is XM Media's internal Symfony bundle that gives us event sourcing, CQRS, and GraphQL on a proven pattern rather than from scratch. It bundles three things we would otherwise fund separately: the domain/API plumbing, a code generator that produces a complete, tested module per domain entity, and the operational features we keep re-scoping — maintenance mode that flips without a deploy and works even when the app won't boot, plus correct idle-session expiry. The trade-off is dependency concentration: it is a single-vendor, zero-adoption package with no public support, so we adopt it only with source ownership (fork or vendored pin) and a named engineer accountable for Prooph/Symfony upgrades. Recommendation: adopt for Symfony services where event sourcing is already the decision, with a two-week spike to validate the generator's manual wiring tail and a documented exit cost; do not adopt for Laravel.

For engineering: It buys convention — strict types, immutable value objects, typed UUIDs, metadata enrichment, one canonical command → handler → aggregate → event → projection → GraphQL flow — and a generator that keeps every module structurally identical, which is the real win for onboarding and review. It costs you: reading the source instead of docs, owning upgrades to Prooph, and a fixed seven-step post-make:model wiring list that is your top candidate for internal tooling investment. Ask for: a pinned version, a fork branch policy, a smoke test that boots the app with maintenance mode on, and a frontend ticket for the GraphQL error-code contract.

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.
skyraptor/chatter
edlugz/sasapay
abbasudo/artisan-route
mirvan/ippanel
ignibyte/aic-framework
glavweb/data-schema-bundle
glavweb/datagrid-bundle
tacticmedia/scim-server
uni-method/frame
neika-ai/sdk
adachsoft/php-code-style
pharaonic/laravel-notification-dependencies
beautinow/translug
dev-brainiac/bot-cloaked
octoberrain/html
octoberrain/extension
octoberrain/exception
octoberrain/contracts
adachsoft/api-version-bundle
cgv/localized-resource