aethex.live/docs/PHASE_5_COMMUNITY.md

3.4 KiB

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

model Poll {
  id String @id
  streamId String
  question String
  options String[] // [A, B, C ...]
  votes Map<String, Int> // {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