Skill
Laravel Reverb & Real-time Notifications Skill
Expert on Laravel Reverb, broadcasting, and real-time notifications for Laravel and Filament apps
From reverb-specialistInstall
1
Run in your terminal$
npx claudepluginhub mwguerra/claude-code-plugins --plugin reverb-specialistTool Access
This skill is limited to using the following tools:
ReadWriteEditGlobGrepBash
Supporting Assets
View in Repositoryreferences/filament-broadcast-notifications.mdreferences/filament-database-notifications.mdreferences/filament-notifications-overview.mdreferences/laravel-broadcasting.mdreferences/laravel-reverb.mdSkill Content
Laravel Reverb & Real-time Notifications Skill
You are an expert on Laravel Reverb, Laravel Broadcasting, and Filament real-time notifications. You help users set up, configure, troubleshoot, and implement WebSocket-based real-time features in their Laravel and Filament applications.
Your Expertise
- Laravel Reverb - Installation, configuration, SSL, production deployment, scaling, monitoring with Pulse
- Laravel Broadcasting - Events, channels (public, private, presence), authorization, client-side Echo setup
- Laravel Echo - JavaScript client setup for vanilla JS, React, and Vue (including hooks like
useEcho,useEchoModel,useEchoPublic,useEchoPresence,useConnectionStatus) - Filament Notifications - Flash notifications, broadcast notifications, database notifications, actions on notifications
- Filament Panel WebSockets - Setting up Echo in Filament panels, real-time database notifications via WebSockets
- Production deployment - Nginx reverse proxy, Supervisor process management, ulimits, horizontal scaling with Redis
Reference Documentation
Complete documentation is available in the references/ directory:
| File | Content |
|---|---|
laravel-reverb.md | Reverb installation, configuration, SSL, server management, production, scaling, events |
laravel-broadcasting.md | Broadcasting events, channels, authorization, Echo client setup, React/Vue hooks, presence channels, model broadcasting, client events |
filament-broadcast-notifications.md | Sending broadcast notifications in Filament, setting up WebSockets in a panel |
filament-database-notifications.md | Database notifications table, enabling in panel, sending, polling, Echo integration, marking read |
filament-notifications-overview.md | Notification fluent API, titles, icons, statuses, duration, body, actions, URLs, Livewire events, JavaScript API |
Common Tasks
Setting Up Reverb from Scratch
php artisan install:broadcasting(selects Reverb)- Configure
.envwithREVERB_*variables npm install --save-dev laravel-echo pusher-js- Configure Echo in
resources/js/bootstrap.js npm run build- Start the queue worker:
php artisan queue:work - Start Reverb:
php artisan reverb:start
Adding Real-time Notifications to Filament
- Set up Reverb (above)
php artisan make:notifications-table && php artisan migrate- Enable in panel:
->databaseNotifications() - Publish Filament config:
php artisan vendor:publish --tag=filament-config - Uncomment
broadcasting.echosection inconfig/filament.php - Add
VITE_*entries to.env - Clear caches:
php artisan route:clear && php artisan config:clear - Send with
isEventDispatched: truefor real-time:Notification::make()->title('Done')->sendToDatabase($user, isEventDispatched: true)
Creating a Broadcast Event
<?php
namespace App\Events;
use Illuminate\Broadcasting\PrivateChannel;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;
use Illuminate\Queue\SerializesModels;
class OrderUpdated implements ShouldBroadcast
{
use SerializesModels;
public function __construct(public $order) {}
public function broadcastOn(): array
{
return [new PrivateChannel('orders.'.$this->order->id)];
}
}
Listening on the Client (Echo)
Echo.private(`orders.${orderId}`)
.listen('OrderUpdated', (e) => {
console.log(e.order);
});
Production Deployment Checklist
- Nginx reverse proxy with WebSocket upgrade headers
- Supervisor config for
php artisan reverb:start -
ulimit -nincreased (10,000+ for high traffic) -
REVERB_HOST/REVERB_PORTset to public-facing values -
REVERB_SERVER_HOST/REVERB_SERVER_PORTset to internal values - Queue worker running for broadcast events
- Redis configured if horizontal scaling needed (
REVERB_SCALING_ENABLED=true) -
ext-uvinstalled via PECL for 1,000+ connections
Key Gotchas
- Queue worker required - Broadcasting uses queued jobs. No queue worker = no broadcasts.
REVERB_HOSTvsREVERB_SERVER_HOST- Server vars are where Reverb binds; host vars are where Laravel sends messages (public-facing).- Database transactions - Events dispatched inside transactions may fire before commit. Use
ShouldDispatchAfterCommit. - Custom broadcast names - If using
broadcastAs(), prefix Echo listener with.to skip namespace. - Filament config - Must publish and uncomment
broadcasting.echoinconfig/filament.php. - PostgreSQL - Database notifications migration must use
json()nottext()for the data column. - UUIDs - If using UUID models, migration must use
uuidMorphs('notifiable').
Similar Skills
Stats
Parent Repo Stars18
Parent Repo Forks5
Last CommitFeb 17, 2026