keesschepers/postcodenl-api-bundle
A Symfony bundle that integrates the Postcode.nl API for looking up Dutch addresses and postcodes. It provides service configuration and a simple client wrapper so you can validate postcodes and retrieve street, city and coordinates within your Symfony application.
Consider it only when:
Look elsewhere when:
AppKernel/services.xml/bundle configuration, not a framework-agnostic library. It cannot be composer require-d and auto-discovered. Treat it as reference code: a first-party adapter behind an AddressLookup interface using Laravel's Http::withBasicAuth() is roughly a day of work and fully owned by you.Non-negotiables if you proceed at all: short timeouts (sub-2s), a circuit breaker, aggressive caching keyed on postcode + house number with a TTL, explicit UX distinguishing "not found" from "error," and a manual address-entry fallback that is always visible — not only on failure. And get privacy/legal review: postcode + house number resolves to a specific address and is personal data in the Netherlands, so you need a processor agreement with the vendor and a decision on what is stored and for how long.
To executives: Dutch address autocomplete is a buy, not a build — a licensed data contract plus a few days of integration, not a sprint. This specific package is a thin, effectively unmaintained Symfony bridge to one vendor (1 star, 0 dependents). It is valuable as proof that the integration cost is trivial and as a reference for the API contract, but it is not strategic infrastructure and should not enter a Laravel codebase. Recommendation: approve the vendor evaluation (postcode.nl vs. Pro6PP vs. Loqate, explicitly including BE/DE coverage, pricing, SLA, and rate limits) and budget ~1–3 dev days for a cached, observable, test-covered adapter. Decline this package as a production dependency on maintenance and supply-chain grounds.
To engineering: the only reusable asset here is a thin HTTP wrapper, and it is not usable from Laravel — different container, different package manifest, different framework contract. Do not inherit it. Build a small first-party AddressLookup interface with a PostcodeNlGateway implementation (Http::withBasicAuth()), configured via config/services.php and .env, bound in a service provider. Normalize postcodes locally before the call, map responses to a normalized address value object, and make the vendor swappable. Add caching, timeouts, metrics, and a feature flag, ship it on one low-risk form, measure latency and failure rate, then broaden. The real long-lead items are not code — they are procurement (credentials, volume pricing), legal (processor agreement, PII retention), and a decision on where address data is persisted.
How can I help you explore Laravel packages today?