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

Jusibe Php Lib Laravel Package

unicodeveloper/jusibe-php-lib

A simple PHP library for the Jusibe SMS API, letting you send text messages, check your remaining SMS credits, and query delivery status from your Laravel or PHP applications, with straightforward methods and minimal setup for Nigerian SMS messaging.

Deep Wiki
Context7

Technical Evaluation

Architecture fit. This is a thin, framework-agnostic REST wrapper around a single third-party gateway (Jusibe, a Nigerian SMS provider). It is not a Laravel package in any meaningful sense — no service provider, facade, publishable config, notification channel, or queue-aware job. In a Laravel codebase it therefore behaves as raw vendor SDK code: it will either get called directly from controllers/jobs (leaking vendor DTOs and error semantics into the domain) or must be wrapped in an adapter. The adapter is the only acceptable fit. Treat it as an implementation detail behind an internal SmsSender contract so the gateway is swappable.

Integration feasibility. Low technical effort, high discipline required. Composer install plus a ~50-line wrapper class and a container binding gets a working send path in under a day. The friction is testability: the library almost certainly issues HTTP via its own transport rather than an injectable client, so you cannot use Http::fake() and must either mock at the adapter boundary or record/replay against a sandbox. Budget for a boundary interface regardless of what the library offers.

Technical risk. Significant and asymmetric.

  • Abandonment risk (high): last release 2020-07-14, ~34 stars, no visible maintainer succession. Five-plus years without a PHP major-version or dependency patch means composer audit and SCA tooling will flag it, and PHP 8.x support is unverified.
  • Dependency risk (medium): legacy Guzzle constraints are the most likely source of composer conflicts with Laravel's own HTTP client and with framework upgrades.
  • Vendor concentration risk (high): single upstream gateway, single region, no first-party failover, retry, or idempotency support in the client.
  • Compliance risk (medium): credentials and message content flow through a third party; data residency and DPA posture are unassessed.

Key questions.

  1. What PHP versions and Guzzle majors does the constraint actually permit against our runtime (PHP 8.2/8.3, Laravel 10/11)?
  2. Are there tests, and can the transport be injected or mocked without patching the source?
  3. Does Jusibe expose delivery-receipt webhooks, and does the client surface them?
  4. Does the send API support an idempotency key or client reference to make retries safe?
  5. What are Jusibe's rate limits, per-tier throughput, SLA, and sender-ID registration requirements?
  6. Is the license chain clean for a fork (MIT permits it) and is there a named internal owner willing to maintain one?

Integration Approach

Stack fit. Compatible in principle with any PHP 7+/Laravel stack, but only via an anti-corruption layer. Place it behind App\Services\Sms\Contracts\SmsSender with plain internal DTOs (SmsMessage, SmsResult); the Jusibe adapter is the sole file that imports vendor classes. Configuration belongs in config/services.php and .env, not in the package's own config file.

Migration path. Phase 0: one-engineer spike in a sandbox branch against a Jusibe test account to confirm PHP/Guzzle constraints resolve. Phase 1: land the internal contract and a NullSender/LogSender fake so feature work is unblocked. Phase 2: implement the adapter and enable it behind a config flag. Because the contract exists from day one, migrating off Jusibe — or forking the library — is a contained change rather than a refactor.

Compatibility. Validate before adoption: composer why-not against the target runtime, a full composer update --dry-run in a clean Laravel skeleton, and SCA scans on the transitive tree. If the only blocker is a version constraint or a Guzzle signature mismatch, the MIT license makes a fork or a vcs repository entry the pragmatic fix — but that converts an external dependency into internal code, which must be an explicit, resourced decision.

Sequencing. (1) Contract and DTOs → (2) adapter + config/secrets → (3) error taxonomy and logging → (4) queue job with retry/backoff → (5) test doubles and contract tests → (6) staging canary to a small allowlist of numbers → (7) production rollout behind a flag with a documented fallback provider.

Operational Impact

Maintenance. Assume you own this code. The upstream is effectively frozen; plan for fork-and-maintain, with a named owner, a quarterly review against PHP/dependency upgrades, and inclusion in the SCA exception register if it ships. The maintenance surface itself is small (a handful of HTTP calls), so the cost is governance overhead rather than engineering effort.

Support. No author support; the real support relationship is with Jusibe. Secure a commercial contact, status page, and escalation path before go-live, and record Jusibe's SLA in the vendor register. Internal runbook must cover credential rotation, quota exhaustion, and provider outage.

Scaling. Throughput is bounded by Jusibe's account tier and rate limits, not by our code. Synchronous sends must be queued with a bounded worker pool and a rate limiter so a bulk campaign cannot starve the queue or trip 429s. Per-message latency is a third-party variable; do not put sends on a user-facing request path. Unit economics (cost per SMS, DLR reconciliation) should be tracked from day one.

Failure modes. The dangerous one is ambiguous failure: a timeout or 5xx after the gateway has already accepted the message. Without idempotency support, blind retries produce duplicate SMS and duplicate charges. Mitigate with a client-side correlation ID, a dedupe window keyed on recipient+body hash, and a conservative retry policy that treats timeouts as "unknown — escalate, do not resend." Other modes: silent exception swallowing, invalid/E.164 formatting, DND and sender-ID rejection, missing delivery receipts requiring a reconciliation job, and expired credentials failing closed with no alerting.

Ramp-up. Low for a PHP developer to make a send call (hours); moderate to build the adapter, observability, and dedupe logic (a few days); the genuine ramp is operational — learning the gateway's error semantics and Nigerian carrier behaviour (sender-ID approval, DND rules, delivery-report reliability). One engineer, one week to production-ready with a fallback path.

TPM recommendation. Conditional adopt. Acceptable only as a wrapped, vendored implementation detail with a documented exit path and an owned fork. Do not adopt as a dependency the platform team assumes will be maintained, and do not let it appear directly in domain code.

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.
unabomber/timezone
delatbabel/contacts
astritzeqiri/g-recaptcha
kevinongko/laravel-genode
developeruz/laravel-analytics
robbiep/afterthedeadline
frankkessler/incontact-laravel-oauth2-rest
jlxh/laravel-userlog
davidmgilo/timetables
qylinfly/role-permission
reflect-digital/conduit
takashato/laravel-vietqr
aitor24/laralang
kraenzle-ritter/entity-relations
dindigital/din-image
pomirleanu/image-colors
sawmainek/laravel-api-generator
delatbabel/jsonresponses
mouhamedfd/permissions-generator
eduplus/qr