PHPackages                             ernestdefoe/social-groups - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. ernestdefoe/social-groups

ActiveFlarum-extension[Utility &amp; Helpers](/categories/utility)

ernestdefoe/social-groups
=========================

Social groups for Flarum 2 — members can create, join, and manage groups.

v2.3.65(1w ago)0304↓90.1%MITJavaScriptPHP ^8.3CI passing

Since May 10Pushed 1w agoCompare

[ Source](https://github.com/ernestdefoe/social-groups)[ Packagist](https://packagist.org/packages/ernestdefoe/social-groups)[ Docs](https://github.com/ernestdefoe/social-groups)[ RSS](/packages/ernestdefoe-social-groups/feed)WikiDiscussions main Synced 1w ago

READMEChangelog (10)Dependencies (1)Versions (106)Used By (0)

Social Groups for Flarum
========================

[](#social-groups-for-flarum)

[![Floxum](https://camo.githubusercontent.com/0b6daf910adf388487cd4eade1d6cc380dccb57b56576f8b3d7d1c52a474b3a9/68747470733a2f2f666c6f78756d2e636f6d2f657874656e73696f6e2f65726e6573746465666f652f736f6369616c2d67726f7570732f62616467652f6e616d65)](https://floxum.com/extension/ernestdefoe/social-groups)[![Version](https://camo.githubusercontent.com/a29ecc2346537bc1774698e0b691767f14eba16fc64739fa4c5efe04b7f7157e/68747470733a2f2f666c6f78756d2e636f6d2f657874656e73696f6e2f65726e6573746465666f652f736f6369616c2d67726f7570732f62616467652f686967686573742d76657273696f6e)](https://floxum.com/extension/ernestdefoe/social-groups)[![Downloads](https://camo.githubusercontent.com/737400ae40446303312009ae252f14f12412f25138a5513171efd2dd406728d5/68747470733a2f2f666c6f78756d2e636f6d2f657874656e73696f6e2f65726e6573746465666f652f736f6369616c2d67726f7570732f62616467652f646f776e6c6f616473)](https://floxum.com/extension/ernestdefoe/social-groups)[![Review](https://camo.githubusercontent.com/67c3b0df97357cff876857d8742cb66206dfd0e9d59831347a5ff06ebb5b9dbd/68747470733a2f2f666c6f78756d2e636f6d2f657874656e73696f6e2f65726e6573746465666f652f736f6369616c2d67726f7570732f62616467652f726576696577)](https://floxum.com/extension/ernestdefoe/social-groups)[![License](https://camo.githubusercontent.com/04ba288b17a15affbbaa0024222f0a071326241b891624720908c6e0d54fa270/68747470733a2f2f666c6f78756d2e636f6d2f657874656e73696f6e2f65726e6573746465666f652f736f6369616c2d67726f7570732f62616467652f6c6963656e7365)](https://floxum.com/extension/ernestdefoe/social-groups)

[![Flarum 2.x](https://camo.githubusercontent.com/355412ac78549063914d73986b16eaf55f88288e0e38557f974ecb71e3328f98/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f466c6172756d2d322e782d3342324144423f6c6f676f3d666c6172756d266c6f676f436f6c6f723d7768697465)](https://camo.githubusercontent.com/355412ac78549063914d73986b16eaf55f88288e0e38557f974ecb71e3328f98/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f466c6172756d2d322e782d3342324144423f6c6f676f3d666c6172756d266c6f676f436f6c6f723d7768697465)[![PHP 8.3+](https://camo.githubusercontent.com/38027453aeb7eb818641c9de8f82b7624c3558d92634f1946edc715c3ddf8956/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5048502d382e332532422d3737374242343f6c6f676f3d706870266c6f676f436f6c6f723d7768697465)](https://camo.githubusercontent.com/38027453aeb7eb818641c9de8f82b7624c3558d92634f1946edc715c3ddf8956/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5048502d382e332532422d3737374242343f6c6f676f3d706870266c6f676f436f6c6f723d7768697465)[![License MIT](https://camo.githubusercontent.com/6c290d3fa30f4a51454757590f2beec29a83cccdfcd9945e2c0d387af01477f3/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e73652d4d49542d323263353565)](https://camo.githubusercontent.com/6c290d3fa30f4a51454757590f2beec29a83cccdfcd9945e2c0d387af01477f3/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e73652d4d49542d323263353565)

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
--------

[](#features)

### Groups

[](#groups)

- **Public &amp; private groups** — public groups are open to all; private groups require a join request or direct invitation.
- **Group image &amp; 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

[](#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

[](#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

[](#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

[](#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

[](#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`)

[](#real-time-optional--requires-flarumrealtime)

See the [flarum/realtime Integration](#flarumrealtime-integration) section below.

---

Requirements
------------

[](#requirements)

DependencyVersionRequiredFlarum2.xYesPHP8.3+Yes`flarum/realtime`anyNo — graceful no-op if absent`fof/upload`^2.0No — required for file/image attachments in posts---

Installation
------------

[](#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
-------------

[](#configuration)

### Admin panel settings

[](#admin-panel-settings)

Navigate to **Admin → Extensions → Social Groups**:

SettingOptionsDefault**Who can create groups**`member` — any registered user; `admin` — forum administrators only`member`### Group privacy

[](#group-privacy)

Group creators choose privacy at creation time:

TypeBehaviour**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
---------------------------

[](#flarumrealtime-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-created` WebSocket 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-typing` event 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/realtime` sets up. Nothing additional needs to be configured.

---

Updating
--------

[](#updating)

```
composer update ernestdefoe/social-groups
php flarum migrate
php flarum cache:clear
```

---

Support
-------

[](#support)

Questions, bug reports, and feature requests:

- **Support forum:**
- **Issues:**

License
-------

[](#license)

Released under the [MIT License](LICENSE). © Ernestdefoe

###  Health Score

50

—

FairBetter than 95% of packages

Maintenance98

Actively maintained with recent releases

Popularity17

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity65

Established project with proven stability

 Bus Factor1

Top contributor holds 99.3% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~0 days

Total

103

Last Release

10d ago

PHP version history (2 changes)2.0.0PHP ^8.1

2.0.1PHP ^8.3

### Community

Maintainers

![](https://www.gravatar.com/avatar/c9978664264055711c21fbcf73c937f758df771d9cb40f6a25370b10123e7abc?d=identicon)[ernestdefoe](/maintainers/ernestdefoe)

---

Top Contributors

[![ernestdefoe](https://avatars.githubusercontent.com/u/24905286?v=4)](https://github.com/ernestdefoe "ernestdefoe (142 commits)")[![claude](https://avatars.githubusercontent.com/u/81847?v=4)](https://github.com/claude "claude (1 commits)")

---

Tags

socialgroupscommunityflarum

### Embed Badge

![Health badge](/badges/ernestdefoe-social-groups/health.svg)

```
[![Health](https://phpackages.com/badges/ernestdefoe-social-groups/health.svg)](https://phpackages.com/packages/ernestdefoe-social-groups)
```

###  Alternatives

[flarum-lang/russian

Russian language pack for Flarum.

12127.5k](/packages/flarum-lang-russian)[fof/byobu

Well integrated, advanced private discussions.

61112.4k10](/packages/fof-byobu)[fof/gamification

Upvotes and downvotes for your Flarum community

4162.0k6](/packages/fof-gamification)[fof/polls

 A Flarum extension that adds polls to your discussions

25130.2k9](/packages/fof-polls)[fof/user-bio

Add a user bio to user profiles

21102.0k9](/packages/fof-user-bio)[fof/sitemap

Generate a sitemap

1896.4k2](/packages/fof-sitemap)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
