kozikaza/mindbaz-bundle
A Symfony bundle that integrates Mindbaz email marketing with your PHP application. It provides configuration and service wrappers for connecting to Mindbaz APIs, helping manage contacts, campaigns, and transactional email workflows from within Symfony.
Architecture fit. Unchanged by v1.1.0. kozikaza/mindbaz-bundle is a Symfony bundle, not a Laravel package. It targets Symfony's DI container, config tree, and bundle registration conventions — none of which exist in Laravel. There is no ServiceProvider, no facade, no publishable config, no package auto-discovery. Any Laravel usage requires an adapter layer or a fork; it cannot be composer required and used idiomatically. The package's actual value is the Mindbaz API transport/business logic underneath the bundle wiring, and that logic is entangled with Symfony components (likely HttpFoundation, Config, DependencyInjection, possibly EventDispatcher). A two-issue patch release does not touch this structural fact.
Integration feasibility. Low as-is, moderate if we treat it as reference source rather than a dependency.
ParameterBag, ConfigDefinition, or event system, extraction cost rises and the fork becomes the realistic path.Technical risk. Still high, but the abandonment signal is now mixed rather than absolute.
Key questions for the spike.
composer.json, Resources/config/services.yml, or the HTTP transport?composer why / composer outdated on the new tag. This single answer determines whether fork cost fell or held flat.Stack fit. Poor out of the box, unchanged. Laravel's idioms — service providers, config/*.php, facades, queued jobs, Http client — have no counterpart in a Symfony bundle. Three viable paths, in increasing cost:
MindbazClient on Laravel's Http facade with typed DTOs, a config file for credentials, and queued jobs for sync. Use the repo — including the v1.1.0 tag — only as documentation of endpoint shapes and field names. Lowest long-term cost, highest control.MindbazServiceProvider, expose config/mindbaz.php, replace the event dispatcher with Laravel events. Viable if the bundle contains substantial business logic (list segmentation, payload mapping) we don't want to rewrite. Budget 3–5 dev-days plus test coverage. Re-baseline this estimate after reading the v1.1.0 diff — it may have shrunk or grown.Migration path. Sequence unchanged; add one step up front.
composer.json constraints moved. This is cheap and directly informs the fork-vs-build call.composer why/composer outdated, inspect Resources/config/services.yml, confirm PHP/Symfony constraints, identify the API base URL and auth header, and hit the Mindbaz sandbox with one subscribe call.ShouldQueue), batched subscriber sync, idempotency keys, dead-letter handling.Compatibility. Expect to bump PHP constraints to ^8.1 and either upgrade or excise Symfony components. Guzzle is likely pinned to a 5.x/6.x line; Laravel 10/11 ships Guzzle 7. That alone may force a rewrite of the transport. Laravel's Http client remains the cleaner replacement. v1.1.0 may have shifted these constraints — verify before quoting this paragraph in the decision memo.
Sequencing. (1) Tag review and diff of v1.1.0 → (2) spike and API contract verification → (3) decision memo (fork vs. build) → (4) client/adapter with contract tests against sandbox → (5) queue-based sync with observability → (6) cutover and decommission any ad-hoc email-list scripts.
Maintenance. We still become the maintainer. v1.1.0 is a weak positive — it demonstrates the repo is not fully abandoned — but it does not constitute a support commitment. No security policy, no changelog discipline in the release notes, no visible second maintainer. A fork means owning the code permanently; a fresh client means owning a smaller, better-understood surface. Either way, assign a named owner. Do not let this sit unowned in composer.json on the strength of one patch release.
Support. No maintainer SLA, no community, no issue history of value beyond #7/#8 themselves. Internal documentation and a runbook remain mandatory. If Mindbaz changes its API, we discover it in production unless we add contract tests. Do not treat the v1.1.0 tag as a signal that upstream will catch API deprecations for us.
Scaling. Unchanged. Subscriber sync is bursty and volume-sensitive. Mindbaz's rate limits are undocumented in the repo — assume they exist and design for them:
Failure modes to instrument explicitly.
catch. Contract tests against sandbox in CI.Ramp-up. Essentially unchanged. The code volume is small; the domain knowledge is the cost. A mid-level Laravel engineer needs 2–3 days to understand Mindbaz's data model (lists, subscribers, consent states, campaign associations) and the bundle's mapping choices. Add a half-day for the Mindbaz sandbox and credential setup, plus the half-day tag review above. Realistic staffing: one engineer for the spike and adapter, one reviewer for the PII/consent review.
Bottom line for the TPM. v1.1.0 ("Fix #7 and #8") is a marginal positive that does not change the recommendation. It moves the package from "abandoned" to "sparsely maintained by an unverified contributor" — still a 2017-era Symfony artifact with no Laravel fit, no community, and no evidence of API re-validation. Spend half a day reading the tag diff to see whether constraints and the transport moved, then proceed as before: two-day spike to confirm the API contract, default to a thin Laravel-native client, fork only if the spike reveals non-trivial business logic worth preserving. Keep abandonment and PII as the headline risks in the decision memo, and continue to gate adoption on named ownership and sandbox contract tests.
How can I help you explore Laravel packages today?