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

Jet Sms Laravel Package

laravel-notification-channels/jet-sms

Jet SMS notification channel for Laravel. Send SMS messages through the Jet SMS API using Laravel’s notification system, with a simple channel integration for direct or queued notifications.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit. The package is a single-purpose Laravel notification channel driver: it registers a JetSmsChannel that implements Laravel's channel contract, binds a service provider via package auto-discovery, and exposes a toJetSms() method on notification classes plus a routeNotificationForJetSms() hook on the notifiable. That is the correct, idiomatic extension point — it composes with Notification::send(), queues, and existing multi-channel fan-out without touching our domain code. If the platform is already on Laravel Notifications, the architectural fit is high and the change is additive. If we are not on Notifications, this package is unusable and we would be paying adapter cost for nothing.

Integration feasibility. Favorably small: MIT license, one channel class, one service provider, one config file, one HTTP client dependency. No database migrations, no published assets, no event hooks. Integration work is dominated by (a) Composer constraint surgery and (b) credential/API verification, not by code comprehension.

Technical risk. The dominant risk is abandonment, not design.

Risk Signal Impact
Unmaintained Last release 2020-03-07; ~5 years stale No Laravel 10/11 or PHP 8.2+ fixes; we own the fork
Unvalidated 9 stars, 0 dependents, score ~0.60 No production battle-testing to borrow; bugs are ours to find
Framework drift 2020-era composer.json targets Laravel 5.5–7 / PHP 7.x Likely hard-blocked install on modern Laravel; needs constraint bump and deprecation fixes
Vendor lock-in JetSMS is a Turkey-focused SMS aggregator Regional reach only; migrating later means rewriting the channel
Transport opacity Channel implementations of this vintage typically call Guzzle directly rather than Laravel's Http client Loses Http::fake() testability and centralized retry/timeout policy
Scope gaps Delivery receipts, webhooks, templated/unicode messaging likely out of scope Cannot confirm delivery; silent failure detection must be built by us

Key questions to resolve before commitment.

  1. Does the vendor API still authenticate the same way (username/password vs. API key) and is the endpoint in config/jet-sms.php still live?
  2. What Laravel/PHP versions does the lockfile actually permit — can we install at all on our current stack?
  3. Does the channel honor Laravel queues, or does it send synchronously inside the request cycle?
  4. Is there any test suite, and does it mock HTTP?
  5. Do we have a contractual need for a Turkish aggregator specifically, or is JetSMS incidental to a single market launch?
  6. What is the vendor's own SLA, rate limit, and sender-ID registration process in Turkey (a regulatory step, not a code step)?

Integration Approach

Stack fit. Requires Laravel with the Notifications component. Works cleanly as one channel among many (mail, database, sms) — recommend treating SMS as an additional channel on existing notifications rather than a parallel sending path.

Migration path — three viable options:

Option Effort When to choose
A. Install as-is Hours Legacy app already on Laravel ≤7 and PHP 7.x; zero code changes
B. Fork and modernize 2–5 days App on Laravel 10/11; bump constraints, replace Guzzle calls with Http, add PHPUnit + Http::fake() coverage, cut a tagged internal release
C. Reimplement in-house 2–3 days We want vendor-swappable SMS abstraction anyway; ~150 LOC behind an interface

For a modern Laravel codebase, B or C is the realistic path — option A is only available if we happen to be on a matching legacy version. If SMS is likely to expand beyond one Turkish provider, C is cheaper long-term because it forces an interface boundary we control.

Compatibility. Verify on a throwaway branch before any estimate is committed: composer require against the actual composer.json, then a smoke test through Notification::fake()/Http::fake(). Do not trust the 2020 constraints as a proxy for compatibility.

Sequencing.

  1. Spike (1 day): install on a branch, send one real SMS to a test handset via a queued notification. This is the only step that can invalidate everything downstream.
  2. Vendor onboarding in parallel: sender-ID registration, credentials, quota, and pricing confirmation — often the longest lead time and outside engineering's control.
  3. Decide fork vs. rewrite, record the ADR, and add an SmsSender interface regardless so the vendor is swappable.
  4. Test harness: config validation test, message-formatting test, HTTP failure path test (timeout, 4xx, 5xx), rate-limit test.
  5. Wire into one low-risk notification (e.g., OTP or transactional confirmation) behind a config flag; observe for one release cycle.
  6. Expand channel-by-channel, not all at once.

Operational Impact

Maintenance. Assume full ownership from day one: no upstream commits since 2020 means we are the maintainers. Budget a small recurring allowance for PHP/Laravel upgrade breaks and vendor API drift; the codebase is small enough that this is hours per year, not weeks — but it is non-zero and must have a named owner. The abandoned-dependency surface is genuinely low risk (no auth, no DB, no file I/O), so the security exposure is limited to the HTTP client dependency, which Composer will manage independently.

Support. The laravel-notification-channels org is community-run with no SLA; GitHub issues on a 9-star repo should be assumed unanswered. Vendor support for JetSMS is a separate commercial relationship and must be contracted directly — do not conflate "package works" with "we have SMS support."

Scaling. Throughput is bounded by the vendor's rate limits and our queue workers, not by the package. Send via queued notifications and set an explicit queue + tries/backoff policy; a synchronous send inside a web request will couple user-facing latency to a third-party API in another region. Per-message cost and vendor-side batching are commercial levers, not code levers. No horizontal-scaling concerns on our side — the channel is stateless.

Failure modes to instrument explicitly:

Failure Current behavior (expected) Mitigation we must add
Vendor 5xx / timeout Exception thrown from queue job Retry policy + alert on repeated failures
Silent rejection (bad number, unregistered sender ID) Likely returns 200 with vendor error body Parse and log response body; assert on success codes
Credential expiry/rotation All sends fail at once Config-driven credentials, health-check notification
No delivery receipt Fire-and-forget Do not promise delivery SLAs; add vendor DLR polling if available
Rate-limit exhaustion Errors under burst Queue throttling, per-tenant quotas

Ramp-up. Low: a competent Laravel engineer reads the whole package in under an hour. The real ramp-up cost is domain knowledge — Turkish sender-ID regulation, vendor dashboard, and message encoding (GSM-7 vs. UCS-2 affects segment count and cost) — which lives with the vendor, not the code.

Recommendation. Proceed only if JetSMS is a confirmed commercial requirement for a Turkish market. In that case, treat this package as reference source, not a dependency: fork it, add HTTP faking and failure-path tests, and place it behind an internal SMS interface. If JetSMS is not contractually required, the 2020 last-release date and zero dependents make this a poor default choice against an actively maintained multi-provider SMS abstraction.

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
cgv/localized-resource