shetabit/sms
Laravel package for sending SMS through multiple gateways using a unified, driver-based API. Configure providers, send messages or OTPs, and switch SMS services without rewriting your application code.
Architecture fit: shetabit/sms is a Laravel-native notification/transport package that abstracts Iranian SMS gateways behind a driver interface. v1.1.0 adds an IPPanel driver contributed by a first-time contributor (@MahdiGraph, PR #2). For a TPM, the significance is not the driver itself but what it confirms: the package is a thin, driver-plugin architecture (config file → driver class → send/sendBulk contract), which fits cleanly into a Laravel service container and is trivially mockable behind an interface. This is the right shape for TPMs who want a stable internal SmsSender seam rather than vendor SDK calls scattered through controllers.
Integration feasibility: Low effort. Install via Composer, publish the config, select the driver, supply credentials. No schema, no queue worker changes, no new infrastructure. The IPPanel addition means teams already standardizing on IPPanel can adopt the package without forking or writing a custom driver wrapper — this removes a previously common blocker.
Technical risk: Moderate but bounded, concentrated in three areas:
Key questions to ask engineering:
Stack fit: Requires Laravel (service provider + facade + config publish). If we are on Laravel 9/10/11, integration is idiomatic; the package slots in beside our existing notification channel rather than replacing it. It should sit behind our own SmsService wrapper, not be called directly from domain code.
Migration path: Two viable routes.
send() call.Compatibility: The v1.0.0 → v1.1.0 delta is additive only (new driver, new config keys). No breaking changes, no deprecations. Any code pinned to ^1.0 will accept 1.1.0 automatically on composer update — decide deliberately whether to allow that (recommended: yes, but pin and test).
Sequencing:
1.1.0) rather than floating.Maintenance: The main ongoing cost is ownership of a low-activity OSS dependency in a transactional send path — i.e. something that fails in front of users. Budget for: watching the repo for releases, a quarterly composer audit/outdated check, and the assumption that we may need to vendor-patch the IPPanel driver ourselves if it breaks against an API change. Because the driver is community-contributed and new, treat it as "works today, unproven at scale" and keep our wrapper authoritative.
Support: The project has no commercial support tier, one primary maintainer, and a contributor who has just made their first contribution. Escalation path is "open an issue" — not acceptable as our sole fallback for a customer-facing notification channel. Mitigation: our wrapper + a documented manual fallback (direct IPPanel API call or a second driver) so an upstream bug is a config change, not an incident.
Scaling: SMS volume scaling is a property of the gateway, not the package. The package adds negligible overhead. Real scaling concerns are (a) queueing — sends must go through Laravel queues with backoff/retry, not synchronous in-request, or a slow gateway will hang user requests; (b) rate limits and throughput — IPPanel plan limits, not PHP, will be the ceiling; (c) bulk sends — verify before relying on it for campaigns.
Failure modes to design for:
Ramp-up: Very low for a Laravel developer — half a day to read the driver interface and config, a day to build the wrapper and first flow. The expensive knowledge is provider-side (IPPanel account setup, sender lines, template approval, delivery reporting), not package-side. Assign that to whoever owns vendor relationships, and ensure credentials are in the secret manager, not the published config file.
How can I help you explore Laravel packages today?