bzl

self-hosted ephemeral community engine
Log | Files | Refs | README | LICENSE

COMMUNITY_FEATURES_ROADMAP.md (6455B)


      1 # Bzl Community Features Roadmap
      2 
      3 ## Purpose
      4 Capture the next major product features requested for community growth, and define a practical build order.
      5 
      6 ## Related Specs
      7 - `docs/ONBOARDING_AND_MOD_MESSAGE_IMPLEMENTATION_SPEC.md` (onboarding panes, mod messages, tutorial overlays, onboarding-first preset)
      8 
      9 ## Scope
     10 This roadmap covers:
     11 - Discovery and organization of hives (`Collections`, sorting, search)
     12 - User personalization and access control (roles, ignore/block, hidden/starred views)
     13 - Content controls (spoiler images)
     14 - Owner customization (theme/banner/title)
     15 - Private communication (DMs, inbox, group chat)
     16 
     17 This roadmap does not replace moderation specs; it builds on top of them.
     18 
     19 ## Status (MVP)
     20 Most of the items originally tracked here are already shipped in the current MVP build:
     21 - Collections + tabs, keyword/author filtering, and sort modes
     22 - Custom roles + collection gating
     23 - Starred/Hidden views
     24 - Ignore/Block (with owner/mod exceptions)
     25 - Owner instance branding + theme/appearance
     26 - 1:1 DMs (with request/accept) and rolling retention purge
     27 
     28 Remaining roadmap items are mainly:
     29 - Spoiler image support
     30 - Group chats / richer inbox & notifications
     31 
     32 ## Requested Features (Normalized)
     33 [x] 1. Search hives by author and keywords.
     34 [x] 2. Curated collections for hives:
     35    - Hive must be assigned to a collection when created.
     36    - Collection filter tabs in hive panel.
     37    - Left-most tab is `All`.
     38 [x] 3. Admin/mod-created extended user roles:
     39    - Decorative labels and optional collection gating.
     40 [x] 4. Sort options:
     41    - `Most Popular`, `Most Recent Activity`, `About to Expire`.
     42 [x] 5. Per-user Starred collection:
     43    - Add `⭐` reaction on hive posts.
     44    - Starred hives appear in the user's `Starred` view.
     45 [x] 6. Per-user hidden hives:
     46    - `Hide Hive` action.
     47    - Hidden hives appear in the user's `Hidden` view.
     48 [ ] 7. Spoiler image support.
     49 [x] 8. Ignore/block users:
     50    - Cannot ignore/block `moderator` or `owner`.
     51 [x] 9. Owner panel for instance branding/theme.
     52 [ ] 10. DMs, inbox/notifications, and group chats (beyond 1:1 DMs).
     53 
     54 ## Architecture Notes
     55 - Keep per-user preferences local-to-user data model (starred, hidden, ignored users).
     56 - Keep curated structures server-authoritative (collections, custom roles, gating rules).
     57 - Keep all access checks server-side (never trust client tab/role claims).
     58 - Reuse existing WebSocket pattern (`init`, delta updates, permission errors).
     59 
     60 ## Data Model Additions (Reference)
     61 ### `collections`
     62 - `id: string`
     63 - `name: string`
     64 - `slug: string`
     65 - `description: string`
     66 - `createdBy: string`
     67 - `createdAt: number`
     68 - `order: number`
     69 - `visibility: "public" | "gated"`
     70 - `allowedRoles: string[]` (custom role keys + base roles)
     71 - `archived: boolean`
     72 
     73 ### `posts` additions
     74 - `collectionId: string` (required; defaults to a server-defined default collection)
     75 - `popularityScore: number` (derived/cached)
     76 
     77 ### `users` additions
     78 - `customRoles: string[]` (owner/mod assigned tags)
     79 - `starredPostIds: string[]`
     80 - `hiddenPostIds: string[]`
     81 - `ignoredUsers: string[]`
     82 
     83 ### `instanceConfig`
     84 - `title: string`
     85 - `bannerUrl: string`
     86 - `theme: object` (colors, accents, optional typography profile)
     87 
     88 ### `dms` / `threads` (future phase)
     89 - `threadId: string`
     90 - `participants: string[]`
     91 - `messages: []`
     92 - `lastActivityAt: number`
     93 
     94 ## Permission Model Additions
     95 - `owner/moderator` can manage collections.
     96 - `owner` can manage custom role definitions and instance branding.
     97 - `members` can star/hide hives and ignore eligible users.
     98 - Gated collections require matching base role or custom role.
     99 - Blocked/ignored users' content is filtered server-side per requesting user.
    100 
    101 ## UX Changes (High-Level)
    102 - Hive compose form:
    103   - Collection dropdown (required).
    104   - Sort selector.
    105   - Keyword + author search inputs.
    106 - Hive panel tabs:
    107   - `All` + curated collections + user-private `Starred` and `Hidden`.
    108 - Hive card actions:
    109   - `Star`, `Hide`, `Chat`, existing moderation/report controls.
    110 - Media rendering:
    111   - Spoiler images render blurred/covered until click-to-reveal.
    112 - Owner panel:
    113   - Branding/theme editor with preview + save.
    114 - People/communication:
    115   - Inbox and DMs surfaces; group threads in later phase.
    116 
    117 ## Implementation Plan (Phased)
    118 Note: Phases 1–3 and the core of 5–6 are implemented in the current MVP. The main remaining items are spoiler images and group chat / richer inbox behavior.
    119 
    120 ### Phase 1: Discovery + Personal Filters
    121 Deliver first:
    122 1. Author + keyword search in hive feed.
    123 2. Sort selector (`popular`, `recent`, `expiring`).
    124 3. Star reaction + per-user `Starred`.
    125 4. Hide action + per-user `Hidden`.
    126 
    127 Acceptance:
    128 - Users can quickly find, sort, star, and hide hives without affecting others.
    129 
    130 ### Phase 2: Curated Collections
    131 1. Backend `collections` model + persistence.
    132 2. Compose dropdown (collection required).
    133 3. Hive tabs for collections + `All`.
    134 4. Collection management UI for owner/moderator.
    135 
    136 Acceptance:
    137 - Mods/owner can curate structure; users browse by collection.
    138 
    139 ### Phase 3: Custom Roles + Gating
    140 1. Role definition model and assignment controls.
    141 2. Collection gating by role.
    142 3. Enforcement for list/view/chat access.
    143 
    144 Acceptance:
    145 - Unauthorized users cannot discover or access gated collections.
    146 
    147 ### Phase 4: Safety + Personal Control
    148 1. Ignore/block users (with owner/mod exceptions).
    149 2. Spoiler image tool and rendering behavior.
    150 
    151 Acceptance:
    152 - Users can reduce unwanted exposure while moderation remains authoritative.
    153 
    154 ### Phase 5: Owner Branding
    155 1. Instance theme/title/banner config.
    156 2. Owner panel with live preview and save/reset.
    157 
    158 Acceptance:
    159 - Owner can personalize visual identity without code edits.
    160 
    161 ### Phase 6: Private Messaging
    162 1. Inbox model and notification events.
    163 2. 1:1 DMs.
    164 3. Group chat threads.
    165 
    166 Acceptance:
    167 - Stable private communication layer with unread state and thread list.
    168 
    169 ## Dependencies and Order Constraints
    170 - Collections should ship before role gating.
    171 - Role gating should ship before private collection-like channels.
    172 - Inbox notification plumbing should be established before full DMs/group chat.
    173 - Ignore/block filtering should be in place before scaling DM usage.
    174 
    175 ## Open Questions
    176 - Should Starred/Hidden be tabs or virtual collections from user prefs only?
    177 - Should custom role tags be visible publicly or owner/mod-only?
    178 - For Most Popular, should score weight reactions, chat volume, and recency equally?
    179 - Should blocked users be hidden in people list and typing indicators too?