Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message
Filament Announcements

Filament Announcements Laravel Package

marcelodelgado/filament-announcements

A Filament v5 plugin for institutional announcements and alerts on panel dashboards. Includes a severity-ordered widget, full CRUD resource with badges and bulk actions, per-user dismiss via pivot table, and automatic expiration using date windows—no jobs required.

View on GitHub
Deep Wiki
Context7

Filament v5 plugin for institutional announcements on the admin dashboard

Frequently asked questions about Filament Announcements
Does filament-announcements work with Filament v3 or v4?
No. The package is built for Filament v5 only, so it cannot be installed on a v3 or v4 panel because the resource, schema, and widget APIs differ across majors. If your estate is still on Filament v3 or v4, the practical path is to treat the repository as a reference implementation and build the equivalent natively on your current version. That also removes the upgrade tax on the next Filament major release.
How do I install marcelodelgado/filament-announcements?
Install it with Composer using composer require marcelodelgado/filament-announcements, then publish the config, migrations, and assets. Register the plugin in your target PanelProvider so the dashboard widget and AnnouncementResource are attached to the panel. Finally run the migrations, and optionally seed sample announcements to confirm the widget renders correctly.
How does automatic expiration work without a scheduled job or queue worker?
Expiration is driven by starts_at and expires_at date windows rather than a scheduled task or queued job. The widget query evaluates which announcements are currently active at render time, so no background worker is required. Be aware that timezone handling at the exact publish and expiry boundary is a common source of subtle bugs, so test those transitions explicitly.
How is per-user dismiss stored, and is it cleaned up when a user is deleted?
Dismissals are recorded per user in a pivot table, so each user's dismissed state is remembered without affecting anyone else. The README does not document the migration's foreign key behavior, so verify that the pivot has cascading foreign keys on both user and announcement deletion. Without cascade or a cleanup hook, dismissing users or deleted announcements can leave orphaned pivot rows.
Is announcement content sanitized, or can authors inject HTML and script tags?
The package documentation does not state whether the announcement body is rendered as trusted HTML or escaped as plain text. Since anyone with authoring rights can write content that appears on every panel user's dashboard, confirm the rendering behavior before granting access. If raw HTML is allowed, restrict the authoring permission to trusted administrators or sanitize input yourself.
How do I control who can create and manage announcements?
The package advertises flexible permissions that work out of the box, with optional Gate or Spatie integration. By default, treat the CRUD resource as reachable by any panel user unless you explicitly gate it. Verify that authorization routes through Filament policies or a Gate before deploying, otherwise every panel user effectively becomes an announcement author.
Does the dashboard widget support multi-tenancy and per-panel scoping?
Multi-tenancy support is not documented in the README, so this needs verification against your panel configuration. If the widget query is not tenant-aware, announcements created in one tenant or panel could leak into another. Test with two tenants and two panels before rolling it out across an institutional installation.
Is the package tested and actively maintained, or should I worry about abandonment?
The project is maintained by a single author with a small install base and no dependents, and its maturity is README-level rather than backed by a test suite or long release history. For a feature this small, abandonment is not catastrophic because you can fork or reimplement it quickly. The real cost is that the next Filament major upgrade would land on your team rather than upstream.
Can I translate the widget and resource strings into another language?
Yes. All user-facing strings pass through Laravel's __() helper and the package ships publishable language files. Publish them and add a locale file for your language, then set the application locale as usual. This makes it practical for institutional panels that need to display announcements in more than one language.
Should I use this package or build announcements myself in Laravel and Filament?
The feature surface is small: one model, one migration, one resource, one widget, and one dismissal pivot table. A competent Filament developer can reproduce it in roughly one to three days, so adopting the package buys convenience rather than capability. Choose it when you are already on Filament v5 and want it working today; build in-house when you need policy control, tenant scoping, or sanitization guarantees the package does not document.
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
htinlynn/genius-helper
maco-studios/hephaestus
elmogy/larafast
xeviant/laravel-paystack
gorilladash/laravel-website-sdk
martialbe/flysystem-oss
chondal/3312client
jeroen-g/flickr
opscale-co/nova-genbi
itsjustvita/laravel-retention
tequilarapido/trackit
gregsphotography/site-builder-filament
cabaoctavio/laravel-query-log
gregsphotography/site-builder-components
io-digital/clickatell
snowsoft/laravel-admin
oxygen/auth
relicsoftware/barakah-payment-gateway
tobya/work-with-composer
equipc/laravel-email-validator