teleport-kirov/laravel-dadata
Laravel integration for DaData.ru services, providing convenient access to address suggestions, company and bank lookups, and other Russian reference data through configurable API clients and simple Laravel-friendly methods. Use it to add autocomplete and data validation to forms.
Architecture fit. This package is a thin Laravel service-provider wrapper around the DaData.RU HTTP API — it adds a config file, a facade/alias, and a client that maps Laravel config to DaData endpoints (address suggestions and normalization, counterparty/EGRUL lookup by INN, bank lookup by BIK, and similar reference-data calls). Architecturally it occupies the same slot as any third-party SDK: an outbound HTTP dependency behind a facade. That is compatible with a standard Laravel layered design, but the facade is a service-locator-shaped seam, not a domain interface. If address or counterparty data is core to the product (checkout, onboarding, KYC, invoicing), the facade boundary is too coarse to test against and too vendor-specific to swap. It fits cleanly only as an implementation detail behind our own AddressNormalizer / CounterpartyLookup contracts.
Integration feasibility. Mechanically trivial: composer require, publish config, set the API token in .env, resolve the facade. A competent Laravel developer is productive in under a day. The real feasibility question is not "can we call it" but "can we depend on it" — and the metadata says no: 0 stars, 0 dependents, score 0. This is an unvalidated personal package (teleport-kirov) whose repository name references another author's project (Pavel-Vinogradov/laravel-dadata-master), which strongly suggests a renamed fork or vendored copy with no community review, no dependents exercising it, and no upstream relationship we can verify. There is no evidence of CI, test coverage, semver discipline, or a maintainer with a support commitment.
Technical risk. Ranked by severity:
illuminate/support ^8|^9|^10|^11). A single major-version pin will block our framework upgrade path and turn a two-line dependency into a fork-maintenance task at the worst possible moment.undefined index errors in our domain code, not as contract failures..env token handling is standard, but confirm the package does not log request URLs with the token, does not cache responses to disk containing PII, and supports separate tokens per environment.Key questions for the maintainer / spike.
Pavel-Vinogradov/laravel-dadata-master, and is this repo intended to track upstream?Stack fit. Good on paper: it is a Laravel-native package, so it drops into an existing Laravel service with no new runtime, no sidecar, no queue infrastructure. If the consuming service is not Laravel (Symfony, a Node storefront, a Python data job), this package is irrelevant and we should call the DaData REST API directly — that is the single most important scoping decision, and it should be made before any evaluation effort is spent.
Migration path. Do not integrate the facade into domain code. Adopt in this order:
AddressSuggestions, AddressNormalize, CounterpartyByInn, BankByBik) in the domain layer. The package becomes the implementation of exactly one adapter class."teleport-kirov/laravel-dadata": "x.y.z", not ^x.y). Given zero dependents, allow no implicit upgrades.Compatibility. Verify composer.json constraints against our current and next Laravel major before committing; if the constraint is narrow, budget the fork now rather than at upgrade time. Confirm auto-discovery registers cleanly and that the facade alias does not collide with an existing alias. Confirm the package does not pin an outdated Guzzle major that conflicts with the rest of the application's dependency graph — a classic failure mode for small wrapper packages.
Sequencing. Ship in value order, each independently shippable and independently revertible:
Maintenance. Treat this as unmaintained code we are adopting, not a dependency we are consuming. Budget: a half-day per quarter to review upstream/DaData API changes, plus a defined owner. If the license blocks vendoring, maintenance cost rises materially because we would be patching a third-party repo via a Composer patch plugin — an acceptable stopgap, a poor steady state.
Support. Support for the package is effectively zero: no dependents, no issue traffic, no stated maintainer commitment. Support for the API comes from DaData and is generally responsive commercial support, which is the part that matters — our failure modes will almost always be API-side, not wrapper-side. Escalation path must be to DaData, not to GitHub.
Scaling. The package itself does not scale; the API contract does. Three cost/latency drivers to design around:
Failure modes and mitigations.
qc/quality codes on normalized addresses and alert on the ratio shifting; otherwise bad addresses enter the database invisibly and surface months later as failed deliveries or rejected invoices.Ramp-up. Low for developers (~half a day to first call, ~2 days to a production-grade adapter with caching, breaker, and fixtures). The non-obvious ramp-up is product and compliance: someone must own the per-request cost model, the 152-FZ data-residency position, and the "what does the user see when DaData is down" decision. That is the real gating item, and it is not solved by the package.
Recommendation. Approve as a narrow, vendored, interface-hidden adapter for address normalization and reference lookups in the Laravel service, contingent on license verification, Laravel-version confirmation, and a successful sandbox spike. Reject it as a general-purpose DaData SDK, as a frontend suggestion backend, and as anything the domain layer can see. The score 0 is not disqualifying for a 300-line wrapper — but it does mean the wrapper is the least valuable part of the dependency and the cheapest part to replace.
How can I help you explore Laravel packages today?