# Phase 5: Community & Engagement - Implementation Guide **Duration**: Weeks 20-23 | **Complexity**: Medium | **Team Size**: 2-3 devs ## Executive Summary Phase 5 deepens viewer-creator connections through interactive features like polls, reactions, emotes, and channel points. Moderators gain tools to manage growing communities. --- ## Phase 5 Goals - Live interactive features (polls, reactions) - Emote system with custom channel emotes - Channel currency (points/channel tokens) - Advanced moderation tools - Community channels and roles --- ## Key Features ### 1. Live Polls (30% implementation time) ``` During stream: ┌─────────────┐ │ Poll (2min) │ │─────────────│ │ ▢ Option A │ │ ▢ Option B │ │ ▢ Option C │ └─────────────┘ Results visible in real-time ``` ### 2. Reactions & Emotes (30%) ``` Schema: - GlobalEmotes (😀, 👍, ❤️, etc) - ChannelEmotes (custom per channel) - UserReaction timestamps - Reaction counts per message Features: - Click emote to add reaction - See who reacted - Hover emote name ``` ### 3. Channel Points (25%) ``` Viewers earn points: - 1 point per minute watching - Bonus for chat, follows - Spend on channel rewards Creator sets rewards: - "Shoutout" - 500 points - "Song request" - 1000 points - "Color chat message" - 200 points ``` ### 4. Moderation Tools (15%) ``` Features: - Timeout users (1h, 1d, etc) - Ban/unban users - Delete messages batch - Auto-mod profanity - Mod dashboard ``` --- ## Implementation Details ### Database Models ```prisma model Poll { id String @id streamId String question String options String[] // [A, B, C ...] votes Map // {optionId: count} duration Int // minutes active Boolean createdAt DateTime } model Emote { id String @id name String image String isGlobal Boolean channelId String? byteSize Int // <100KB uses Int } model ChannelPoints { id String @id userId String channelId String balance Int @@unique([userId, channelId]) } model ChannelReward { id String @id channelId String name String cost Int // points active Boolean } model Moderation { id String @id channelId String actionType String // TIMEOUT, BAN, DELETE, etc targetUserId String duration Int? // For timeouts reason String? moderatorId String timestamp DateTime } ``` ### APIs ``` Polls: - POST /api/streams/:id/poll (create) - GET /api/streams/:id/poll (current) - POST /api/polls/:id/vote Emotes: - GET /api/emotes (global) - GET /api/channels/:id/emotes - POST /api/channels/:id/emotes (upload) - POST /api/messages/:id/reactions Channel Points: - GET /api/channels/:id/points (balance) - GET /api/channels/:id/rewards (claim reward) - POST /api/rewards/:id/claim Moderation: - POST /api/channels/:id/mod/timeout - POST /api/channels/:id/mod/ban - GET /api/channels/:id/mod/logs ``` --- ## Success Metrics - 80%+ streams use interactive features - 1M+ emote reactions per month - 50k+ channel point transactions - 500k+ polls responses - 95% moderation response time <10s --- ## Timeline | Week | Tasks | |------|-------| | 20 | Polls, reactions | | 21 | Emotes system | | 22 | Channel points | | 23 | Moderation tools, polish | --- **Completion**: Week 23 (by June 6, 2025) **Next**: Phase 6 - Gaming & Esports See [PHASE_6_GAMING.md](PHASE_6_GAMING.md)