bzl

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

COMMUNITY_FEATURES_ROADMAP.md (6302B)


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