caiquebispo/notification-bell
An elegant, framework-agnostic Laravel notification bell for Livewire with per-user preferences, sound and category controls, dark mode, and a zero-build delivery pipeline. No Tailwind, Bootstrap, or npm needed—install via Composer, drop the component in your layout, done.
--days, --unread-days), and scheduling/expiry are all configurable. These are product policies, not just config — the PM owns the numbers, and this package gives them a home.NotificationCreated event is the intended hook for mirroring elsewhere, so this is an in-app layer, not a notification platform.Consider it when:
vendor:publish" claim matters if your team is backend-heavy or your design system is Bootstrap/plain CSS.Look elsewhere (or build) when:
Notifiable + database channel plus a UI layer may fit better, or a heavier platform.item_view/bell_icon overrides isn't deep enough — you'll end up forking views, which erodes the buy argument.Mitigation if you proceed anyway: pin the version, vendor:publish the migrations and config so schema and defaults live in your repo, wrap all calls behind a thin internal Notifier service so the package is swappable, and treat upgrades as manual reviewed PRs rather than composer update drift. The README's "deploy safety" section (idempotent, reconciling migrations) suggests the author has thought about production, but treat that as a claim to verify in staging, not a guarantee.
For executives: This is a candidate shortcut for a feature every user sees but no customer buys. It would give us a complete in-app notification center — bell, badges, toasts, preferences, history, admin tools, mobile API — for roughly the cost of an evaluation spike instead of an estimated multi-sprint build. The trade-off is concentration risk: it's a young package from a single author with essentially no adoption. My recommendation is a time-boxed, two-week spike in a non-critical surface, gated on three checks: (1) does it survive our staging deploy and cleanup job, (2) can we theme it to our design system without forking, (3) can we wrap it so removal is a one-file change. If any check fails, we fall back to building the bell ourselves on Laravel's native database notifications — the spike still leaves us with the spec, the config decisions, and the schema.
For engineering: The functional surface is broader than what we'd build in a first pass — deduplication, rate limiting, grouping, scheduling/expiry, soft deletes with undo, broadcasting with automatic polling fallback, and an optional REST API that scopes to the authenticated user. Integration is a composer require, a migration, a HasNotifications trait on User, and one <livewire:notification-bell /> in the layout. No frontend build step. The asks in return: pin the version, publish and own the migrations and config, put every call behind an internal service class, and don't let NotificationCreated listeners become a hidden coupling. We accept the maintenance burden of a solo-maintainer dependency in exchange for roughly a sprint of frontend and API work we don't do.
What we should decide now, regardless of adoption: the dedup window, the per-user rate cap, retention periods for read vs. unread vs. archived, whether quiet hours and snooze are on by default, and which categories users are allowed to mute. Those are product calls the package only parameterizes — and they're the same calls we'd need to make if we built it ourselves.
How can I help you explore Laravel packages today?