Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Icobench Client Laravel Package

kami/icobench-client

A PHP client for the ICOBench API that wraps endpoints for ICO listings, ratings, and related data in a simple, framework-friendly interface for Laravel and standalone PHP applications, helping streamline integration of ICOBench data into your projects.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit. kami/icobench-client is a thin HTTP wrapper: a Laravel service provider, a facade or bound client, Guzzle under the hood, and a handful of request methods that map to ICOBench REST endpoints (ICO listings, ratings, profiles). As an architectural pattern, it fits any Laravel codebase that wants vendor integrations isolated behind a gateway interface — config-driven credentials, PSR-compatible transport, swappable backing service. As an architectural fit for the actual domain, it is irrelevant: ICOBench is a 2017–2018 ICO-ratings service that has been offline for years. The structure is clean; the thing it talks to no longer answers.

Integration feasibility. Mechanically trivial (composer require, publish config, set two env vars), functionally near-zero. Three facts dominate:

  • The upstream API is dead. Every outbound call is expected to fail at the DNS, TLS, or HTTP layer. No amount of client-side debugging fixes a parked domain.
  • The package is frozen at 2018-06-02. Zero releases in seven-plus years, 3 stars, 0 dependents, single-maintainer provenance. There is no ecosystem evidence it works against anything today.
  • Framework drift is likely. A 2018 artifact almost certainly pins Laravel 5.x and Guzzle 6.x. Installing on Laravel 10/11 will probably require --ignore-platform-reqs, manual constraint edits, or a fork — with no upstream to merge the fix.

Technical risk. High and non-diversifiable. The three risks a TPM should carry into any decision:

  1. Dead external dependency — the component's entire value is contingent on a service that no longer exists.
  2. Unowned code — MIT-licensed but effectively abandoned; every transitive vulnerability, PHP-version incompatibility, and security patch becomes permanently yours.
  3. Unproven quality — with no dependents and no community vetting, "it probably works" is the ceiling of what anyone can assert without reading every line.

Key questions to resolve before spending any engineering time:

  1. Is the requirement live ICO data (impossible via this package) or historical/archival data (better served by a static dataset than an HTTP client)?
  2. Is there a surviving mirror, archive, or internal copy of the ICOBench API responses?
  3. Could the same requirement be met with a short first-party Guzzle adapter against a current provider (CoinGecko, CoinMarketCap, CryptoCompare, Messari)? Almost certainly yes, at lower total cost.
  4. If this surfaced from a legacy-codebase audit, what is the replacement plan — and does the original package even need to be understood, or just removed?

Integration Approach

Stack fit. Nominally Laravel, but specifically Laravel 5.x-era Laravel. On a modern stack it does not "integrate" so much as "get vendored and patched." If the team insists on installing the Packagist artifact, budget for constraint relaxation and a fork from day one.

Migration path. The only defensible route, if a genuine requirement exists:

  1. Fork the repository into an internal namespace (e.g. internal/icobench-client).
  2. Strip the service provider in favor of a self-contained client bound behind an interface — the Laravel container wiring is a convenience, not a requirement.
  3. Repoint base_uri at whatever live, mirrored, or internal endpoint you actually control. If the published config does not expose a base URL override, the fork is mandatory.
  4. Treat the original as reference material for request signatures and response shape, not as a dependency. Do not pin the Packagist artifact in composer.json.

Compatibility. Verify hard, and early, against your actual target versions:

  • PHP constraint (likely ^7.0/^7.1; modern stacks expect ^8.1+).
  • Laravel service-provider API (package discovery on 5.5+ vs. manual registration).
  • Guzzle major version (^6.0 vs. ^7.0 — a common Composer conflict).
  • Facade aliasing conventions, which have shifted slightly across versions.

Assume incompatibility and design around it. The cost of confirming is an hour; the cost of assuming "it just works" is a mid-sprint surprise.

Sequencing for a TPM.

  1. Validate the premise first — cost: minutes. Run a single curl against the ICOBench API. If it does not respond, stop. Do not commission a spike, do not open a Jira epic. Redirect to a current provider.
  2. Clarify the requirement. Archive/research vs. live product data. These have completely different solutions and completely different budgets.
  3. If and only if an endpoint exists: prototype as a standalone PHP script (no Laravel), confirm request/response shape, then decide fork vs. roll-your-own.
  4. Wrap behind an internal MarketDataGateway interface so the transport is swappable when the next provider dies. For a client this thin, building your own Guzzle wrapper is usually less total effort than resurrecting an abandoned one — and you own it cleanly.

Operational Impact

Maintenance. Effectively zero upstream. Once adopted, you own every line: no security backports, no compatibility fixes for new Laravel/PHP versions, no bug triage from the author. The maintenance burden is 100% internal from day one, in perpetuity, for a component whose primary function is to call a service that no longer exists. That is a structurally poor trade.

Support. No community, no active issues, no release cadence, 3 stars, 0 dependents. "Support" means a team member reading seven-year-old source under time pressure. Escalation paths do not exist; there is nobody to escalate to.

Scaling. Client-side scaling is a non-issue — it is HTTP calls. The real scaling question is availability of the upstream, and the upstream is presumed dead. If a substitute endpoint is sourced, throughput becomes a provider-selection question (rate limits, quotas, SLA), not a package question. Do not let "scaling" become a discussion here; it distracts from the actual blocker.

Failure modes to design against (if anyone adopts this anyway):

  • Hard outage on every call — the most likely reality. Requires strict timeouts, circuit-breaking, and graceful degradation so a page render does not become a 500.
  • Silent staleness — if any responses are cached, they freeze at 2018 state and can be presented as "current," which is worse than no data at all. Cache invalidation policy is a safety issue here, not a performance one.
  • Unhandled transport exceptions — a 2018-era wrapper may not surface DNS/TLS timeouts cleanly. Confirm before wiring into a request path.
  • Dependency-resolution failure in CI — install-time breakage that blocks unrelated work if the package lands in a shared lockfile.
  • Rate limiting and auth rotation — absent from the package entirely, and not forthcoming.

Ramp-up. The code is small, readable, and easy to onboard — a junior engineer can understand it in an afternoon. That is the easy part. The expensive part is organizational: justifying the adoption, forking and maintaining the fork, and carrying the reputational risk of shipping stale crypto data as if it were live. Even a fast ramp leaves you owning a liability.


Recommendation for the TPM: do not adopt this package. It is not a dependency decision; it is an archaeological artifact. Its genuine leverage is as (a) a five-minute reference for how a Laravel API-client package should be structured, and (b) a concrete data point in the build-vs-buy argument for crypto data ingestion — vendor wrappers churn on a two-to-three-year cycle, so the durable answer is a thin first-party adapter behind an interface with a named replacement path. If ICO or asset data is a real requirement, scope a current provider and own the client. Make this call early and cheaply, and move the team on.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
socialdept/atp-orm
cboxdk/laravel-assistant-client
socialdept/atp-resolver
socialdept/tenant-domains
tautvydasr/blade-class-names
socialdept/color-scales
maherelgamil/controller
coleus/widgets
coleus/table
coleus/users
coleus/music
coleus/health
coleus/calendar
coleus/notes
coleus/support
coleus/settings
coleus/apps
seampact/laravel
emmyconceptng/laravel-ng-postcode
jjsquady/round-robin