A chronological, algorithm-free social feed for your family. Posts, comments, and reactions stay on your server. No engagement scoring, no ad targeting, no data leaving your VPS.
nself-social is part of the ɳFamily bundle. Requires nself-family for the member graph. Set your license key with nself license set nself_pro_... before installing.
nself license set nself_pro_...
nself plugin install family social
nself build
nself startnself-social gives every member of your family a private feed. Posts appear in strict chronological order — newest first, no exceptions. There is no algorithm deciding what anyone sees. If someone posted, it shows up.
Each post supports text, photos (served from your nself-photos store), and links. Members react with a fixed emoji set or leave comments. Reactions are tallied but never used to rank content. Comments are threaded one level deep to keep discussions readable.
Privacy is post-level. A post can be visible to all family members, a named group (grandparents, siblings), or just the author. The plugin enforces visibility at the database row level via Hasura permissions — no client-side filtering.
| Variable | Required | Default | Description |
|---|---|---|---|
PLUGIN_SOCIAL_MAX_POST_LENGTH | No | 2000 | Character limit per post body |
PLUGIN_SOCIAL_MAX_MEDIA_PER_POST | No | 10 | Max photo/video attachments per post |
PLUGIN_SOCIAL_ALLOWED_REACTIONS | No | ❤️,👍,😂,😮,😢 | Comma-separated emoji reactions members can leave |
PLUGIN_SOCIAL_COMMENT_MODERATION | No | off | Set to admin to require admin approval before comments are visible |
PLUGIN_SOCIAL_FEED_PAGE_SIZE | No | 20 | Posts returned per feed page |
| Endpoint | Method | Description |
|---|---|---|
/social/posts | GET | Paginated feed for the authenticated member (chronological) |
/social/posts | POST | Create a post. Body: { text, media_ids[], visibility } |
/social/posts/:id | PATCH | Edit own post text or visibility |
/social/posts/:id | DELETE | Delete own post (admins can delete any) |
/social/posts/:id/comments | GET / POST | List or add comments on a post |
/social/posts/:id/reactions | POST / DELETE | Toggle a reaction on a post |
/health | GET | Plugin health check |
| Table | Purpose |
|---|---|
np_social_posts | Post body, author, visibility, created/updated timestamps |
np_social_comments | Comment text, author, parent post, optional parent comment (one level) |
np_social_reactions | Emoji, author, parent post — unique constraint per author+post+emoji |
np_social_post_media | Join table linking posts to nself-photos media IDs |
nself-social emits Hasura events you can subscribe to for notifications or automation:
| Event | Payload |
|---|---|
social.post.created | Post ID, author ID, visibility, created_at |
social.comment.created | Comment ID, post ID, author ID |
social.reaction.toggled | Post ID, author ID, emoji, action (added/removed) |
Wire these to nself-notify to send push notifications when a family member reacts to a post.
nself-social works alongside nself-photos for media attachments. When a post includes photos, the media IDs reference albums in nself-photos — the social plugin never stores its own image data. The nself-activity-feed plugin subscribes to social.post.created to populate the activity timeline automatically.
# Install the full family stack
nself plugin install family social photos activity-feed cms
nself build && nself start| Feature | nself-social | Facebook/Instagram | Tinybeans / 23snaps |
|---|---|---|---|
| Data hosting | Your VPS | Meta servers | Vendor cloud |
| Algorithmic feed | No — chronological only | Yes | No |
| Ads / tracking | None | Extensive | Limited |
| Self-host option | Yes (the whole point) | No | No |
| Monthly cost | $0.99 (bundle) + VPS | Free (paid with data) | $4.99/mo |
| Symptom | Fix |
|---|---|
| Post returns 403 | The author is not a member of the family graph. Install nself-family and add the user first. |
| Media attachments missing | nself-photos is required. Run nself plugin install photos and rebuild. |
| Feed returns empty even with posts | Check visibility. Posts set to a named group are filtered by Hasura. Confirm the member is in the group. |
Port: 3825 | Bundle: ɳFamily ($0.99/mo) or ɳSelf+ ($3.99/mo) | Last Updated: May 2026 | Plugin Version 1.0.13