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

Core Api Laravel Package

graham-campbell/core-api

Core API provides a lightweight foundation for building APIs in Laravel, offering reusable interfaces, traits and helpers that keep endpoint development consistent, structured and easy to extend.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit. Read this package as a template, not a component. It ships a Laravel 4 service provider and facade, a publishable config file (base URL, credentials, timeouts), and an abstract API base class you subclass per remote service. It encodes one architecture: a Laravel 4 monolith on PHP 5.4–5.6 making config-driven, DI-resolvable Guzzle calls to a single upstream "Core API." The layering advice it encodes — facade → service/repository → domain, vendor quirks confined to a subclass, transport hidden behind an interface you own — is sound and survives any migration. The implementation does not. The framing that drives every decision below: this repository is a specification of an API contract and a layering pattern, dressed as a dependency.

Note also the description/reality mismatch: the summary claims a "clean, extensible foundation for exposing your application's core services over HTTP," but the tech read shows a config-driven HTTP client wrapper for one specific upstream. A TPM should price the requirement, not the marketing copy — if the ask is "serve an API from Laravel," this package is irrelevant to it.

Integration feasibility. Effectively nil on any target stack. Composer will hard-conflict on illuminate/* 4.x constraints and the PHP platform requirement; there is no tagged release compatible with Laravel 5+ and no maintainer to produce one. The realistic "integration" is a reimplementation of 50–150 lines of first-party code. Budget it as a one-to-three-engineer-day rewrite, not a composer require. Correcting that stakeholder misread early is the highest-value thing a TPM does here — it is the difference between a bounded task and an open-ended commitment to own an EOL runtime.

Technical risk. High and largely non-mitigable, with each risk forcing a planning decision:

  • Abandonment is explicit, not inferred. The repo sits under a GrahamDeprecated org. Treat as end-of-life; there is no ambiguity to debate.
  • Zero stars, zero dependents. No community validation, no downstream bug reports, no crowd-sourced fixes — no evidence anyone runs this in production recently.
  • EOL runtime. PHP 5.x has had no security support since 2018; Laravel 4.2 longer. Every latent CVE is our exposure, with no upstream patch path.
  • Supply-chain fragility. An archived repo can be deleted or its Packagist entry abandoned, silently breaking reproducible builds — a build-integrity issue, not just a code issue.
  • Undocumented upstream contract. Auth scheme, rate limits, and response schemas are unspecified in the sources, so the real risk surface is the upstream API, not this wrapper.
  • No CI, tests, or triage process. Anything built on it is validated only by our own contract tests.

Key questions.

  1. What business capability is actually requested — "call an HTTP API from Laravel," or something specific to the Core API service? If the former, this package is irrelevant to the requirement.
  2. Does the upstream Core API still exist, who operates it, and who signs off on its contract? Everything gates on this.
  3. Is there an OpenAPI/JSON Schema spec or recorded payloads we can build against instead of the wrapper?
  4. What is the auth model (static key, bearer, OAuth, signed requests), and does it require refresh or per-tenant scoping?
  5. Which existing systems already call this API through this package? That inventory — not the package — is the migration scope.
  6. Is the license confirmed as MIT before any vendoring or forking?
  7. What does this package do that Laravel's Http facade or Guzzle 7 in 50–150 lines would not? If the answer is "nothing," close the evaluation.

Integration Approach

Stack fit. Legacy-only, and even there it is a liability — compatible with Laravel 4.1/4.2 and PHP 5.x, nothing else. For any Laravel 9+ target (up through 11/12, PHP 8.1+), reposition it in the portfolio as reference material: the extracted contract and the layering pattern are the deliverable, not the artifact.

Migration path. Do not add it to a modern composer.json. Sequence as small, gated work:

  1. Reimplement, don't adopt. Extract endpoints, headers, auth, and error handling; rebuild as a thin first-party client on the Http facade (Laravel 7+) or Guzzle 7, behind an interface the team owns (CoreApiClient), so no call site ever sees the transport.
  2. If stuck on L4.2, vendor the classes into app/Services/ and drop the provider and facade — own the code explicitly rather than depending on a Packagist artifact that may vanish.
  3. If a legacy consumer must keep the dependency, pin exact versions, commit composer.lock, mirror the repo to internal VCS, and document the mirror in the runbook. No reliance on Packagist availability.

Compatibility effort drivers. Price these in up front rather than discovering them mid-sprint: PSR-0/PSR-4 autoloading differences; Guzzle 3/4-era client and exception APIs versus Guzzle 7 (ConnectException handling, HandlerStack middleware conventions); removed 4.x helpers (array_get, str_*, array_except); PHP 8 reserved-word and type-signature conflicts; config moving from a published package file to config/services.php plus .env. None are surprises — they are the line items.

Sequencing and gates. (G0) Confirm the business need and API ownership/contract clarity — block on this. (G1) Timeboxed one-day spike: one real call against a sandbox endpoint using Http/Guzzle 7. (G2) Define the interface, DTOs, config keys, timeouts, and retry policy. (G3) Contract tests against recorded fixtures. (G4) Cut over consumers behind the interface, one at a time. (G5) Remove the dependency and close it out. Realistic total: a few engineering days, not a multi-sprint project — so schedule it as dependency hygiene attached to the Laravel upgrade, never as a standalone initiative.

Operational Impact

Maintenance. Zero upstream: no releases, no security response, no triage, no roadmap. Ownership transfers to us the moment we adopt it. Practical TPM action: register it in the dependency inventory as frozen/abandoned with a named internal owner, a quarterly review cadence, and a target retirement date tied to the framework upgrade. Every future CVE in the PHP 5 runtime or its Guzzle generation becomes an internal ticket with no upstream fix — call that out explicitly to whoever owns security risk acceptance.

Support. No vendor, no SLA, no channel. The README is the entire knowledge base; everything else must be reverse-engineered from source. Onboarding a Laravel-fluent engineer to read the package is hours — the real cost is rediscovering the upstream API's behavior, which is undocumented whether or not this package exists. The highest-leverage mitigation in this whole assessment: capture the contract as a written spec plus fixtures so the knowledge outlives the code. That artifact also shortens SOC2/ISO evidence gathering and acquisition diligence, where "unmaintained dependency on an EOL runtime" is exactly the finding auditors and acquirers surface.

Scaling. The client itself is lightweight; the ceiling is upstream rate limits plus the runtime. A PHP 5.x/PHP-FPM deployment blocks containerization, current opcache/JIT gains, and modern observability tooling, so the package's presence tends to anchor the entire service to obsolete infrastructure. Guzzle 3/4-era clients also lack pooled/concurrent request ergonomics and standard middleware, so throughput problems get worked around in application code rather than solved at the transport layer. None of this scales into a service you would want to grow.

Failure modes. Enumerate them for the runbook, because each currently lands on our on-call rather than a vendor: silent upstream schema drift (no version pin against the remote, no contract tests unless we write them); token/credential expiry with no refresh path; no timeout and no retry policy by default, so a slow upstream becomes an exhausted PHP-FPM worker pool and a site-wide outage; exceptions surfacing as unhandled 500s instead of typed, retryable errors; Packagist or repo disappearance breaking clean builds and new-engineer setup; and, in the worst case, the upstream service being retired with no announcement and no fallback. Mitigations belong in the replacement client — timeouts, bounded retries with backoff, circuit breaking, structured logging, and alerting — not in this wrapper.

Ramp-up. Two distinct curves, and they should not be conflated. Reading this package takes an experienced Laravel engineer a few hours; the code is thin and conventional. Becoming productive on the integration takes far longer, because the real unknowns are the upstream's auth flow, rate-limit behavior, and error semantics — none documented. Plan for a short spike to prove one real call end-to-end before committing estimates, and treat the resulting notes as the onboarding doc. For portfolio planning, the takeaway is that ramp-up cost on this dependency is not the learning curve; it is the absence of anyone left to ask.

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.
uni-method/symfony-lib
tacticmedia/scim-server-bundle
neika-ai/symfony-bundle
mattleads/agent-publishing-bundle
glavweb/framework-bundle
glavweb/extra-bundle
glavweb/api-bundle
glavweb/admin-bundle
adachsoft/api-version-bundle
elsayed85/laravel-api-exceptions
ouhssini/laravel-demo-mode
daworks/ncloud-outbound-mailer-driver
gp247/cms
ignibyte/aic-gates
nexa-merchant/blog
novasa/laravel-language-center
opencage/geocode
adolfoholzer/parameters
livenetworks/ln-starter
shitoudev/permissionmanager