setono/post-nord-bundle
A Symfony bundle that integrates PostNord shipping services into your application, helping you create shipments, generate labels, and handle tracking through a clean, configurable API wrapper.
Architecture fit
symfony/http-kernel, symfony/config, symfony/dependency-injection, and Laravel's container does not load bundle Extension/CompilerPass classes. The bundle's actual functionality is reachable only via the underlying setono/post-nord-php-sdk.Integration feasibility
bundles.php, add a config/packages/setono_post_nord.yaml with credentials, inject the client. No Flex recipe is indicated, so expect manual registration and hand-written config; allow half a day including sandbox validation.setono/post-nord-php-sdk directly and wrap it in your own service provider plus a ShipmentGateway-style interface. Effort is similarly low, but you own the wiring — which is essentially all the bundle provides.v1.2.0...v2.0.0-alpha). We cannot state from the release itself what breaks. Until the changelog/diff is read, treat the upgrade path as unevaluated; reading the diff is a ~2 hour task and should be a spike deliverable, not an assumption.Technical risk
composer.lock, are unknown.2.0.0-alpha may need rework before 2.0.0 stable ships.setono/post-nord-php-sdk major, and/or a floor raise to Symfony 7 / PHP 8.2+ with Symfony 5/6 and PHP 8.0/8.1 support dropped. If our platform is on Symfony 6.x this could make v2 uninstallable for us irrespective of benefit.ShipmentGateway and (for Laravel) never installs the bundle, this release does not change our integration plan. It changes only the version we pin and the questions we ask.Key questions
v1.2.0...v2.0.0-alpha diff: config tree keys, service IDs/aliases, constructor signatures, minimum Symfony/PHP, and the SDK version constraint.2.0.0 stable, and will alphas continue to break BC? If the answer is vague, we pin to v1.x and revisit quarterly.Stack fit
PostNordShipmentGateway adapter in front of it. Rule: no SDK type crosses into domain/application code.setono/post-nord-php-sdk inside a dedicated app/Services/Shipping/PostNord module bound to a ShippingCarrier interface. The package then becomes a reference implementation for config shape, not a dependency.Migration path
shipments, labels, tracking_events, carrier_requests tables. Never let label PDFs or tracking state live only inside carrier responses.v2.0.0-alpha in any environment that matters. New work starts on pinned v1.2.0 (or SDK-direct, preferred). Stand up a throwaway branch running the alpha against sandbox to learn what breaks; that branch is research, not a migration.Compatibility
composer why-not / dry-run install against the current lockfile before committing. Check PHP constraint, Symfony major, and PSR/Guzzle versions.1.2.0 exactly (not ^1.2), and treat 2.0.0-alpha as a separate, quarantined evaluation track. Do not allow a caret range that could float us into a 2.x pre-release, and confirm minimum-stability: stable plus an explicit prefer-stable so no alpha can enter the lockfile transitively.Sequencing
ShippingCarrier / ShipmentGateway contract (create label, book pickup, void label, fetch tracking, validate address).v1.2.0...v2.0.0-alpha diff and log the BC breaks in an internal POSTNORD_BUNDLE_UPGRADE.md. Feed the answers into the step-8 build-vs-depend decision — a churning bundle is a stronger argument for our own wiring.Maintenance
UPGRADING.md note and a pinned-version policy.1.2.0 → 2.0.0 and decide, on each alpha/beta/RC, whether to move. Budget roughly 1–2 engineer-days per evaluation cycle, plus the actual migration once stable lands.1.2.0), not from a moving pre-release.Support
Scaling
Failure modes
minimum-stability change lets 2.0.0-alpha into the lockfile, and a routine composer update silently changes fulfilment behaviour. Mitigate with exact pins plus a CI check that asserts resolved versions.2.0.0-alpha break when 2.0.0 ships differently. Mitigate by never building product code against a pre-release.Ramp-up
2.x in flight; do not pick versions from the README without checking the pin." Otherwise a new engineer following upstream docs will install the alpha by default, which is the single most likely way this release hurts us.1.2.0 stable, do not adopt 2.0.0-alpha, and re-open the bundle-vs-own-wiring decision when 2.0.0 reaches stable with real release notes. No change to scope, budget, or timeline from this release.How can I help you explore Laravel packages today?