Browsing as a guest. You can post with a name and email, like, and report. Sign in as Maya, Tomas, Priya… to pin, moderate, and see author badges from the other side.

Live demo · twelve models · Commentify

Comments for a blog. Reviews for a product. Notes on a recipe. Same package.

A real Laravel app running the public Commentify package. Guest comments on twelve models, Livewire on every thread. React and Vue look the same and ship with Commentify.

Maya Chen · staff engineer Author

The point about losing foreign keys gets overweighted. Three `*_comments` tables drifting is the actual incident.

Pinned · 4 likes · 2 replies

Alex Kim · guest

Used chives because the shop was out of scallions. Still blistered. No account needed.

Recipe note

Aisha Bello · moderator Staff

That comment with two scam URLs was denied by the heuristic checker. Not a person at 2am.

Webhook · pending

The whole integration

use Commentable;

class Recipe extends Model
{
    use Commentable;
}
<livewire:comments :model="$recipe" />

Relabel it “Reviews”, “Cook’s notes”, or “Ask the hiring team”. Guests, GIFs, pins, and the JSON API speak the same thread.

Drop it on anything

Twelve surfaces. One comments table.

Blog article

The classic. A long-form post with a threaded discussion underneath.

Author badge · Pinned comment · Markdown · @mentions

Product reviews

Comments are reviews when you label them that way. Same table, same code.

Relabelled UI · Likes as “helpful” · Reporting

Course lesson

A Q&A thread under a video lesson, where replies are the whole point.

Deep nesting · Instructor answers · Most-liked sort

Changelog entry

Ship a release, collect reactions on it without leaving your own site.

Markdown release notes · Notifications · Moderation queue

Support ticket

A private conversation. Read-only mode is how you close a ticket.

Read-only mode · Policies · Audit log

Design review

Feedback pinned to a mockup, with the thread beside the canvas.

Side-by-side layout · Approval flow · Emoji

Podcast episode

Listener discussion under an episode, timestamps and all.

Guest likes · Oldest-first sort · Long threads

Documentation page

Let readers annotate your docs, so the gaps find you.

Compact layout · Spam pipeline · Webhooks

Recipe notes

Substitutions, timings, and “I burned the first batch.” Guest comments welcome.

Guest commenting · Gravatar · Markdown lists

Event discussion

RSVP questions, travel tips, and a thread that outlives the night.

Subscribe to replies · Mentions · Nested Q&A

Job listing Q&A

Candidates ask about stack, visa, and hours. The hiring manager answers in-thread.

Hiring manager badge · Approval optional · Reporting

Photo comments

Critique, EXIF nerding, and a GIF of the wave that almost got away.

Image & GIF upload · Guest likes · Pins

Highlights

Built into Commentify.

Full list →

Installation

On your app in four steps.

Same package this demo runs. Composer require, migrate, add the trait, drop the Livewire component.

  1. 1. Require the package

    composer require usamamuneerchaudhary/commentify

    Livewire 4 and Flux install with it. PHP 8.2+ and Laravel 12 or 13.

  2. 2. Publish config and migrate

    php artisan vendor:publish --tag=commentify-config
    php artisan migrate

    That creates the comments, likes, and reports tables and a config/commentify.php file.

  3. 3. Make a model commentable

    use Usamamuneerchaudhary\Commentify\Traits\Commentable;
    
    class Post extends Model
    {
        use Commentable;
    }
  4. 4. Drop the thread on the page

    <livewire:comments :model="$post" />

    That is the whole integration. Guests, markdown, likes, and reports are config flags after this.

Full install notes →