laravilt/notifications
Laravel package for laravilt/notifications that adds database-backed in-app notifications, read and unread tracking, and simple delivery helpers built on Laravel's native notification system. Lightweight, configurable, and easy to drop into existing apps.
composer require laravilt/notifications, then look first at the package README.md, config/notifications.php, and the src/ + resources/js/ folders. The config file is the map: it tells you which channels, polling/broadcast behaviour, and UI stack (Vue vs React) the package expects.php artisan vendor:publish --tag=laravilt-notifications-config, the asset/stub tags, and php artisan migrate (the package ships its own notifications table migration in addition to Laravel's default). Confirm the table exists before wiring UI.// app/Notifications/OrderShipped.php extends the package's base Notification (or Laravel's)
$user->notify(new OrderShipped($order));
Verify the unread badge updates after a page reload before you move on to real-time delivery.Notifiable on your User, toDatabase() / toBroadcast() on notification classes, and let the package own the read/unread, listing, and UI endpoints. Wrap package logic rather than reimplementing mark-as-read.HandleInertiaRequests so the bell renders server-side on first paint; let the package's client component take over for live updates. This avoids the flash of an empty bell.php artisan queue:work) gives instant updates. Broadcasting requires a queue worker and correct channels.php auth for the private user channel — test with queue:work running, not sync.title, body, icon, url, actions) so the same record renders in the dropdown, a full notifications page, and any future email digest. Keep the payload serialisable and free of Eloquent models.composer update.composer.json constraints across your whole app before pulling 1.1.0 in; a package supporting 13 may still run on 12, but transitive Laravilt packages must agree.php artisan queue:failed).notifications table, don't let the package migration recreate it — check the published migration and guard with Schema::hasTable.toDatabase() payload shape. Prefer config/views over editing vendor/ so upgrades stay clean.How can I help you explore Laravel packages today?