larament/barta

Barta is a Laravel package designed to integrate popular Bangladeshi SMS gateways seamlessly.

Maintainers

Package info

github.com/iRaziul/barta

pkg:composer/larament/barta

Fund package maintenance!

iRaziul

Statistics

Installs: 174

Dependents: 0

Suggesters: 0

Stars: 56

Open Issues: 0

v1.3.0 2026-03-30 08:18 UTC

This package is auto-updated.

Last update: 2026-04-01 17:33:41 UTC


README

Barta is a Laravel package for integrating Bangladeshi SMS gateways.

Barta - Laravel package for integrating Bangladeshi SMS gateways

Latest Version on Packagist Total Downloads Run Tests PHPStan Pint License

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 8801XXXXXXXXX format
  • Extensible — Create custom drivers for any SMS gateway

Supported Gateways

  • log driver 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.

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

⭐ Star us on GitHub