worksome/company-info
Laravel package for looking up company details by VAT number. It offers a unified API across multiple data providers like VIES and Virk, returning consistent DTOs for names, addresses, and registration info so you can easily swap or combine sources.
Scope of this release. v1.5.0 is a single-purpose compatibility release: one PR from @laravel-shift adding Laravel 13.x support, plus a first-time contributor. No new features, no deprecations, no documented breaking changes. For a TPM this reads as a maintenance/hygiene release, and the meaningful signal is not the diff but what it says about the maintainer's release cadence and version-support policy.
Architecture fit. worksome/company-info sits in the "external data acquisition" layer of a Laravel application: it wraps one or more company-registry data sources behind a Laravel service provider, config file, and (typically) a facade/driver abstraction, returning structured company records. That is an inherently peripheral dependency — it should not own domain logic, persistence, or business rules. Fit is good if we treat it as a replaceable adapter and keep our own DTO/VO boundary in front of it. Fit is poor if teams let its response objects leak into domain code or Eloquent models, because then a future swap of registry or package becomes a refactor rather than a config change.
Integration feasibility. Low-friction on the framework side: package discovery, a publishable config file, and credentials for whichever registry backend is used. The real integration work is not Laravel wiring but (a) credential/agreement procurement with the data source, (b) mapping its fields to our canonical company schema, and (c) deciding our caching and rate-limit posture. None of that is delivered by the package.
Technical risk.
illuminate/* constraints, the package may no longer install on our current framework line — that would be a silent breaking change for us even though the changelog shows none.Key questions.
illuminate/support / laravel/framework constraint? What is the full supported matrix now?Stack fit. Presumes a conventional Laravel app on Composer with package auto-discovery. No queue, broadcast, or frontend implications. It is a synchronous read path unless we deliberately wrap calls in jobs — worth deciding early, because registry latency (often 200ms–2s) will otherwise surface directly in request time.
Migration path. No prior assessment exists, so v1.5.0 is our baseline. Treat adoption as greenfield: pin to ^1.5, evaluate on a spike branch, and do not begin on an older tag — starting on the Laravel-13-compatible line avoids a re-qualification later. If we are currently on Laravel 12 and adopt now, confirm the constraint permits it; if the PR dropped ≤12 support, we defer adoption until our own framework upgrade lands.
Compatibility. Verify three axes before committing: Laravel framework major (10/11/12/13), PHP version floor, and transitive dependency overlap with our existing packages (notably anything also constraining illuminate/* or symfony/*). Run composer why-not worksome/company-info ^1.5 in the target app — this is a five-minute check that resolves most of the risk above.
Sequencing.
composer.json; confirm the supported matrix.CompanyInfo interface + DTO so the package is swappable; wire the package behind it.Maintenance. Ongoing cost is modest and mostly external: credential rotation with the registry, monitoring registry API changes, and an annual-ish framework-compatibility bump. Internal code maintenance is near-zero if we keep it behind our own interface. Budget a small recurring allowance rather than a project line item.
Support. Thin upstream team; expect GitHub issues rather than an SLA, and no commercial support implied. That is acceptable for a peripheral adapter but means we should be prepared to fork — a package this small is forkable in days. Record that as the explicit contingency, and confirm the license permits it.
Scaling. Scales with request volume only insofar as the upstream registry allows. Cost driver is rate limits and per-lookup pricing/agreements, not compute. Caching is the primary lever: most company records are stable over weeks, so a 24h–7d cache converts a lookup-heavy workload into a near-static one. Add per-registry concurrency caps and a circuit breaker so a slow registry cannot exhaust PHP-FPM workers.
Failure modes.
Ramp-up. Low for any Laravel-fluent engineer: config + facade, hours not days. The real ramp-up is domain knowledge — which registry, what the identifiers mean, which fields are authoritative, and what to do when a lookup returns partial data. Pair the technical onboarding with a short written data-contract note; otherwise each team re-learns the same field-mapping ambiguities.
Verdict. Adopt v1.5.0 as the baseline, gated on a one-hour constraint audit confirming it installs on our current framework line. The release itself is benign; the decision to make is architectural — consume it strictly behind an internal interface with caching and a circuit breaker, so that the package's maintenance cadence and the registry's availability are both contained.
How can I help you explore Laravel packages today?