nanorocks / laravel-database-newsletter
Laravel Newsletter package with built-in database driver support
Fund package maintenance!
Nanorocks
Requires
- php: ^8.3
- illuminate/support: ^10.0|^11.0|^12.0
Requires (Dev)
- orchestra/testbench: ^10.6
README
Laravel Database Newsletter is a simple and elegant package for managing newsletter subscribers directly in your database.
Instead of relying on third-party services, it allows you to store, check, and manage subscribers locally inside your Laravel application.
β¨ Features
- π¦ Installable via Composer
- ποΈ Store subscribers in your own database (MySQL, PostgreSQL, SQLiteβ¦)
- π Supports additional attributes (name, preferences, etc.)
- π Easy subscription management (
subscribe
,unsubscribe
,isSubscribed
) - π§ Configuration via
.env
andconfig/newsletter.php
- π§ͺ Includes tests for stability and reliability
π Installation
Require the package via Composer:
composer require nanorocks/laravel-database-newsletter
Publish migrations and configuration:
php artisan vendor:publish --tag="newsletter-migrations" php artisan vendor:publish --tag="newsletter-config" php artisan migrate
βοΈ Configuration
Set the driver in your .env file:
NEWSLETTER_DRIVER=database
The configuration file config/newsletter.php can be customized to your needs.
π Usage
Use the Newsletter
Facade to manage subscribers:
use Nanorocks\DatabaseNewsletter\Facades\Newsletter; Route::get('/test-newsletter', function () { $email = 'john@example.com'; // Subscribe a user Newsletter::subscribe($email, ['name' => 'John']); // Update a subscriber (alias of subscribe) Newsletter::subscribeOrUpdate($email, ['name' => 'John Doe']); // Check if a user is subscribed $isSubscribed = Newsletter::isSubscribed($email); // Get subscriber details $member = Newsletter::getMember($email); // Get all members $allMembers = Newsletter::getAllMembers(); // Unsubscribe a user Newsletter::unsubscribe($email); // Delete a subscriber Newsletter::delete($email); return [ 'is_subscribed' => $isSubscribed, 'member' => $member, 'all_members' => $allMembers, 'is_subscribed_after_unsubscribe' => Newsletter::isSubscribed($email), ]; });
π Supported Versions
-
PHP: ^8.3
-
Laravel: 10.x, 11.x, 12.x
π Roadmap
- β Database driver
- β³ Artisan commands for subscriber management
- β³ Laravel Notifications integration
- β³ Multi-list support
π€ Contributing
Contributions are welcome! Feel free to submit a pull request or open an issue if you have ideas or find a bug.
π License
This package is released under the MIT License.