laravel-notification-channels/jusibe
A Laravel notification channel for sending SMS messages through Jusibe. Integrate Jusibe’s SMS API with Laravel’s notification system to deliver transactional or alert messages to users via a simple, familiar channel.
Architecture fit
laravel-notification-channels shape: a package ServiceProvider, a JusibeChannel honoring Illuminate\Notifications\Notification, a fluent JusibeMessage value object, and a thin client wrapping Jusibe's HTTP API. This maps cleanly onto Laravel's existing notification abstraction, so SMS stays out of domain/services code and is dispatched via the same $user->notify() path as mail and database channels.illuminate/support and Guzzle constraints almost certainly cap installation on modern Laravel (8+). Verify composer.json before assuming composer require resolves.Integration feasibility
jusibe key/token to config/services.php, implement routeNotificationForJusibe() on the notifiable, build a JusibeMessage in a toJusibe() method, and dispatch. Realistically half a day end-to-end including tests.app/Notifications/Channels/ and swapping the raw Guzzle calls for Laravel's Http facade is a few hours of work, not a project.Technical risk
Notification contract method signature have all moved since 5.3. Any resurrection requires validating against the target framework version explicitly.Http::fake()) and contract tests ourselves.Key questions
Stack fit
SmsSender contract in the app, have the notification channel depend on that interface, and let the Jusibe implementation be one adapter among potentially several. This is the single decision that de-risks vendor changes and is cheap now.Migration path
JusibeChannel, JusibeMessage, and the API client into the application (or a private Composer package under our namespace). Retain the MIT license header.Http facade for testability, timeout configuration, and centralized retry policy.config/services.php entry and secret manager rather than a published config file.Http::fake() tests covering success, 4xx, 5xx, and timeout, plus a notification-level test asserting the correct payload shape.composer.json.Compatibility
send($notifiable, Notification $notification) signature against the target Laravel version — the contract has evolved.Http facade to avoid resolver conflicts with other packages.array_get-style helpers, nullable handling).Sequencing
SmsSender abstraction in place; land tests.Maintenance
composer.json where a composer update can silently break it.Support
laravel-notification-channels org is semi-active but this repository is dormant. Escalation is internal engineering, plus the Jusibe account manager for anything API-side. Document this in the runbook so on-call doesn't chase a dead GitHub issue.Scaling
JusibeMessage level, since the package will not do it for us.Failure modes
tries/backoff deliberately, and treat 4xx as non-retryable to avoid burning quotas.SmsSender abstraction. This is the most likely real-world incident and the strongest argument for the abstraction over a direct dependency.Ramp-up
How can I help you explore Laravel packages today?