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?