Filament Reviews
A drop-in, always-moderated review system for Filament — polymorphic and slug-keyed, with counter-cache aggregates, schema.org rich snippets, and a tabbed moderation queue.
Attach reviews to any Eloquent model, or key them to a string slug for catalog entries that are not DB rows yet — both live in one table.
Every submission lands as pending. A reviewer publishes or rejects — nothing goes live automatically.
Logged-in users are captured automatically; guests submit with a name/email. Honeypot + per-IP/user/subject rate limiting block spam.
reviews_avg + reviews_count are kept in sync on every moderation action, so listing pages never run a live AVG() query.
One helper emits an AggregateRating block for rich star snippets in Google results.
Pending / Published / Rejected / All tabs with badge counts, per-row approve/reject, and bulk actions.
EntityReviewsRelationManager plugs the queue into any existing resource via getRelations().
Registers a casing-tolerant moderate-reviews gate; integrates with filament-shield and spatie/laravel-permission.
Ships RTL-friendly translations out of the box; publishable lang files for any locale.
Pending / Published / Rejected tabs with one-click approve & reject and bulk actions.
How moderation flows
A visitor (or signed-in user) posts a rating + comment. It lands as pending — never live yet.
A reviewer publishes or rejects from the queue. The moderate-reviews gate guards the whole resource.
On publish, reviews_avg + reviews_count update so listings stay query-free.
Installation
Make any model reviewable
Register the Filament plugin
Public submission form + list (Livewire)
Two Livewire components render the front-end. The form is honeypot-protected and rate-limited; the list shows only published reviews.
Drop the queue into an existing resource
Prefer to moderate inside the record you already manage? Add the relation manager — no extra page needed.
Read aggregates from code
schema.org rich snippets
Emit an AggregateRating JSON-LD block so Google can show star ratings for your pages.