larament / barta
Barta is a Laravel package designed to integrate popular Bangladeshi SMS gateways seamlessly.
Fund package maintenance!
Requires
- php: ^8.2
- illuminate/contracts: ^11.0||^12.0||^13.0
- spatie/laravel-package-tools: ^1.16
Requires (Dev)
- larastan/larastan: ^3.0
- laravel/pint: ^1.14
- nunomaduro/collision: ^8.8
- orchestra/testbench: ^11.0||^10.0||^9.0.0
- pestphp/pest: ^3.0||^4.0
- pestphp/pest-plugin-arch: ^3.0||^4.0
- pestphp/pest-plugin-laravel: ^3.0||^4.0
- phpstan/extension-installer: ^1.4
- phpstan/phpstan-deprecation-rules: ^2.0
- phpstan/phpstan-phpunit: ^2.0
README
Barta - Laravel package for integrating Bangladeshi SMS gateways
Barta provides a clean, expressive way to send SMS from Laravel applications using Bangladeshi gateways. It gives you a single API for transactional messages, OTP delivery, alerts, queued sends, and notification-based messaging.
The package is designed to feel native in Laravel projects while keeping gateway-specific concerns isolated to drivers and configuration.
Key Features
- Multiple Gateways — Seamlessly switch between SMS providers
- Bulk SMS — Send to multiple recipients in a single call
- Queue Support — Dispatch SMS to background jobs
- Laravel Notifications — Native integration with Laravel's notification system
- BD Phone Formatting — Automatic phone number normalization to
8801XXXXXXXXXformat - Extensible — Create custom drivers for any SMS gateway
Supported Gateways
logdriver for local development and testing- Most Bangladeshi SMS gateways are supported
Full gateway list and setup instructions are available at barta.larament.com/gateways.
Requirements
- PHP 8.2 or higher
- Laravel 11 to 13
Installation
Install via Composer:
composer require larament/barta
Optionally, you can run the install command:
php artisan barta:install
Quick Start
Set your default driver in .env:
BARTA_DRIVER=log
Then send your first message:
use Larament\Barta\Facades\Barta; Barta::to('01712345678') ->message('Your OTP is 1234') ->send();
Send through a specific gateway:
Barta::driver('DRIVER_NAME') ->to('01712345678') ->message('Hello from Larament Barta') ->send();
Queue a message for background delivery:
Barta::to('01712345678') ->message('Queued message') ->queue();
Send to multiple recipients:
Barta::to(['01712345678', '01812345678']) ->message('Hello everyone!') ->send();
Tip
Use the log driver during local development and automated tests to avoid sending real SMS.
Laravel Notifications
Barta integrates with Laravel's notification system through the barta channel:
use Illuminate\Notifications\Notification; use Larament\Barta\Notifications\BartaMessage; class OrderShipped extends Notification { public function via(object $notifiable): array { return ['barta']; } public function toBarta(object $notifiable): BartaMessage { return new BartaMessage('Your order has been shipped!'); } }
Route notifications to a phone number on your notifiable model:
public function routeNotificationForBarta($notification): string { return $this->phone; }
Learn more at barta.larament.com/advanced/notifications.
Phone Number Formatting
Barta automatically normalizes Bangladeshi mobile numbers into 8801XXXXXXXXX format.
| Input | Normalized |
|---|---|
01712345678 |
8801712345678 |
+8801712345678 |
8801712345678 |
Documentation
The full documentation lives at barta.larament.com.
- Getting started: barta.larament.com/usage/basic-usage
- Gateway configuration: barta.larament.com/gateways
- Notifications: barta.larament.com/advanced/notifications
Testing
composer test # Run tests composer test-coverage # With coverage composer analyse # Static analysis
Use the log driver during testing to avoid sending real SMS.
Changelog
See CHANGELOG.md for recent changes.
Contributing
See CONTRIBUTING.md for details.
Security
Report vulnerabilities via our security policy.
Credits
License
MIT License. See LICENSE.md.
Made with ❤️ for the Bangladeshi Laravel Community