ernestdefoe / social-groups
Social groups for Flarum 2 — members can create, join, and manage groups.
Package info
github.com/ernestdefoe/social-groups
Language:JavaScript
Type:flarum-extension
pkg:composer/ernestdefoe/social-groups
Requires
- php: ^8.3
- flarum/core: ^2.0
Suggests
- fof/upload: ^2.0 — required for file/image attachments in group posts (the attach button in the post composer calls /api/fof/upload)
- dev-main
- v2.3.65
- v2.3.64
- v2.3.63
- v2.3.62
- v2.3.61
- v2.3.60
- v2.3.59
- v2.3.58
- v2.3.57
- v2.3.56
- v2.3.55
- v2.3.54
- v2.3.53
- v2.3.52
- 2.3.51
- 2.3.50
- 2.3.49
- 2.3.48
- 2.3.47
- 2.3.46
- 2.3.45
- 2.3.44
- 2.3.43
- 2.3.42
- 2.3.41
- 2.3.40
- 2.3.39
- 2.3.38
- 2.3.37
- 2.3.36
- 2.3.35
- 2.3.34
- 2.3.33
- 2.3.32
- 2.3.31
- 2.3.30
- 2.3.29
- 2.3.28
- 2.3.27
- 2.3.26
- 2.3.25
- 2.3.24
- 2.3.23
- 2.3.22
- 2.3.21
- 2.3.20
- 2.3.19
- 2.3.18
- 2.3.17
- 2.3.16
- 2.3.15
- 2.3.14
- 2.3.13
- 2.3.12
- 2.3.11
- 2.3.10
- 2.3.9
- 2.3.8
- 2.3.7
- 2.3.6
- 2.3.5
- 2.3.4
- 2.3.3
- 2.3.2
- 2.3.1
- 2.3.0
- 2.2.13
- 2.2.12
- 2.2.11
- 2.2.10
- 2.2.9
- 2.2.8
- 2.2.7
- 2.2.6
- 2.2.5
- 2.2.4
- 2.2.3
- 2.2.2
- 2.2.1
- 2.2.0
- 2.1.10
- 2.1.9
- 2.1.8
- 2.1.7
- 2.1.6
- 2.1.5
- 2.1.4
- 2.1.3
- 2.1.2
- 2.1.1
- 2.1.0
- 2.0.11
- 2.0.10
- 2.0.9
- 2.0.8
- 2.0.7
- 2.0.6
- 2.0.5
- 2.0.4
- 2.0.3
- 2.0.2
- 2.0.1
- 2.0.0
- dev-claude/fix-social-groups-audit-DAGns
- dev-claude/fix-cyrillic-transliteration-ZU1Et
This package is auto-updated.
Last update: 2026-05-30 23:31:39 UTC
README
A full-featured social groups extension for Flarum 2. Members can create public or private groups, post to a Facebook-style feed, hold threaded discussions, share media, react to posts, run polls, and more — with optional real-time updates powered by flarum/realtime.
Features
Groups
- Public & private groups — public groups are open to all; private groups require a join request or direct invitation.
- Group image & banner upload — each group has its own avatar and cover banner image.
- Featured groups — administrators can pin groups to a featured row on the group directory.
- Primary group badge — members designate one group as their primary group; the badge is displayed on their Flarum profile.
- Group analytics dashboard — overview of member count, post activity, and growth over time (visible to group admins and moderators).
- RSS feed — each group exposes a per-group RSS 2.0 feed at
/groups/{slug}/feed.rss.
Feed
- Facebook-style post cards with full Flarum BBCode/Markdown rendering.
- Emoji reactions — six reaction types: 👍 Like, ❤️ Love, 😂 Haha, 😮 Wow, 😢 Sad, 😡 Angry; one reaction per user, toggleable.
- Polls — create polls directly from the post composer; members vote inline with live percentage bars.
- Link previews — URLs are automatically expanded into rich Open Graph preview cards (title, description, thumbnail).
- Media attachments — attach images and files to posts via
fof/upload(optional). - Pin posts — group admins can pin discussions to the top of the feed.
- Post search — debounced search bar filters discussions by title or content in real time.
- Post sharing — share any discussion into another group you belong to, with an optional comment; shared posts render a quoted card.
Discussions
- Threaded discussion view at
/groups/{slug}/d/{discussionId}with nested comment replies. - Pin discussions to the top of the discussion list.
- Share discussions to the group feed.
Media Gallery
- Dedicated "Media" tab on each group page aggregating all images from posts and discussions into a responsive thumbnail grid with lightbox.
Member Management
- Join requests — group admins approve or reject membership requests; direct invitations bypass the queue.
- Promote / demote — elevate a member to group admin or step them back down.
- Kick — remove a member from the group.
- Member badges on profiles — group membership chips appear on Flarum user profile cards forum-wide.
Notifications
- Alert when a new post is created in a group the user participates in.
- Alert when someone replies directly to a user's post.
Real-time (optional — requires flarum/realtime)
See the flarum/realtime Integration section below.
Requirements
| Dependency | Version | Required |
|---|---|---|
| Flarum | 2.x | Yes |
| PHP | 8.3+ | Yes |
flarum/realtime |
any | No — graceful no-op if absent |
fof/upload |
^2.0 | No — required for file/image attachments in posts |
Installation
composer require ernestdefoe/social-groups php flarum migrate php flarum cache:clear
Then go to Admin → Extensions and enable Social Groups.
After every update, run the migrate and cache-clear commands to apply any new database migrations:
php flarum migrate && php flarum cache:clear
Configuration
Admin panel settings
Navigate to Admin → Extensions → Social Groups:
| Setting | Options | Default |
|---|---|---|
| Who can create groups | member — any registered user; admin — forum administrators only |
member |
Group privacy
Group creators choose privacy at creation time:
| Type | Behaviour |
|---|---|
| Public | Anyone can view the feed, discussions, and gallery. Joining is instant. |
| Private | Content is hidden from non-members. New members must submit a join request (approved by a group admin) or be invited directly. |
flarum/realtime Integration
The real-time features are entirely optional. If flarum/realtime is not installed the extension works normally — the typing endpoint silently returns 204 and the post-broadcast listener exits immediately without any error or warning.
When flarum/realtime is installed and running:
- Live post injection — after a member submits a reply in a group discussion thread, all other members viewing that thread see the new post card appear instantly via the
sg-post-createdWebSocket event. No page refresh is needed. - Typing indicator — while a member is composing a reply, an animated "Jane is typing…" indicator with bouncing dots is broadcast via the
sg-typingevent and displayed above the reply box for all other members viewing the same thread. The indicator disappears automatically when the member stops typing or submits their post. - Deduplication — the client compares each incoming post's ID against already-rendered posts to prevent duplicates when both the HTTP response and the WebSocket push arrive for the same post.
- No extra configuration — the extension uses the existing public Pusher/Soketi channel that
flarum/realtimesets up. Nothing additional needs to be configured.
Updating
composer update ernestdefoe/social-groups php flarum migrate php flarum cache:clear
Support
Questions, bug reports, and feature requests:
- Support forum: https://ernestdefoe.online
- Issues: https://github.com/ernestdefoe/social-groups/issues
License
Released under the MIT License. © Ernestdefoe