3.4 KiB
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