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