filagora/filagora-forums
Filagora Forums is a Laravel/PHP package for adding a complete discussion forum to your app. It includes categories, topics, replies, moderation, role-based permissions, configurable models, migrations, and a clean Blade UI, making forum setup and customization straightforward.
forum_reads, thread_reads, ReadTracking), mentions (post_mentions, Mentions, UsersMentioned), and attachments (post_attachments, Attachments). PM can frame the forum as a full discussion product rather than a posting surface, and sequence "return visit" and "notification" work without new architecture.ReadTracking provides isUnread(), unreadAmong() for a page of threads, unreadThreads() for a new-content feed, plus mark-thread/forum/everything-read and a hand-made unread flag that beats every read time. This directly supports decisions about unread badges, digest emails, default landing views ("Unread" vs "Latest"), and whether to invest in a notification system at all. read_tracking.unread_max_lookback_days is the explicit product lever for the cost/freshness trade-off on those feeds.UserMentionedNotification, an email default switchable via mentions.mail.enabled, and a configurable route (mentions.routes.thread) so deep links land on the product's own permalink. PM can launch mention emails, A/B them, or turn them off without engineering work — and can decide notification policy (frequency, caps) with mentions.max_per_post as the abuse ceiling.intervention/image, access that follows the post's visibility, serving with safe headers and a download count, and SVG never rendered in-page. That is the unglamorous 80% of a file-upload feature — permission inheritance, MIME safety, and thumbnail generation — and it is exactly the portion a PM should not fund as bespoke work.filagora:forums:prune-attachments plus the forums.orphaned_attachments retention rule give PM a policy dial for orphaned files. This supports decisions about storage budget, "how long do we keep uploads from deleted posts," and whether attachments are a permanent archive or a transient convenience.ForumSearch, ThreadDatabaseSearch, ThreadSearchIndex, and filagora:search:backfill remain the search story. The new release adds data worth indexing (attachment presence, mention counts, unread state) but does not change the earlier build-vs-buy framing.mentions.mail.enabled plus UserMentionedNotification is a working default, not a stub.filagora:adopt now expects twenty-one tables and eight migrations (previously twenty tables / seven). If the team has already adopted the package, treat the table-count expectation as a migration-checklist item, not a surprise.filagora/filagora-core ^0.2.2 and pulls intervention/image for thumbnails. Confirm the core version pin against your existing install and confirm image processing is acceptable in your runtime (memory limits, queue workers, cold-start size).ReadTracking answers "read/unread", not "how engaged".For executives: v0.6.0 turns the forum from a place people post into a place people return to. Three additions do the work: unread tracking (a "what's new" experience and the data foundation for digests), @-mentions with email (the cheapest re-engagement loop a community has, shipped with sane limits and a kill switch we control), and file attachments (uploads, thumbnails, and permission-safe serving, built rather than bought). Two points matter commercially. First, all three are policy-configurable — mention caps, retention rules for orphaned files, email on/off, unread lookback window — so we can tune cost and risk without engineering cycles. Second, privacy obligations are covered out of the box: export and erasure now extend to uploads, read markers, and mentions, which removes a recurring blocker in enterprise and EU deals. The incremental cost is one dependency bump (filagora-core ^0.2.2) and one additional image library.
For engineering: The release adds post_attachments / post_attachment with the Attachments service (per-person hourly upload limit, inline upload-then-claim, intervention/image thumbnails, access inherited from the post, safe response headers, download counting, SVG never inlined, authorizeUsing() for third-party files, AttachmentRefused), plus filagora:forums:prune-attachments and the forums.orphaned_attachments retention rule. post_mentions / post_mention ships the Mentions service with extraction that skips code and quoted blocks, author exclusion, recipient deduplication, visibility filtering, and a per-post cap enforced across edits under a row lock, emitting UsersMentioned with listeners for new/edited/approved/restored posts and approved threads, gated by mentions.enabled, with UserMentionedNotification and mentions.mail.enabled. forum_reads / thread_reads / forum_read / thread_read ship the ReadTracking service with mark-read/unread semantics, page-level unreadAmong(), bounded unreadThreads(), subquery-based read-time checks so arbitrary queries can be passed in, and a baseline column via read_tracking.baseline_attribute. Migration bookkeeping moves to eight migrations and twenty-one tables for filagora:adopt; core requires ^0.2.2. Search is unchanged from v0.5.0 — ForumSearch, ThreadDatabaseSearch, ThreadSearchIndex, filagora:search:backfill — and the search package remains suggested, not required, so adoption can stay incremental.
How can I help you explore Laravel packages today?