Problem Understanding
Restate the problem in your own words.
Design Slack / Discord (Workspace Chat)
Design a Slack / Discord-class workspace chat: each workspace holds many channels (public + private + DMs), users send messages that are pushed in real-time to every member's open client, and threaded replies layer ordered conversations inside otherwise-unordered channels. Public channels can have 100 k+ members; users open hundreds of channels; presence + typing must work across all of them. The hot path is per-channel WebSocket fan-out; the cold path is workspace-wide full-text search across years of history. The decisive trade-offs are per-channel vs per-user fan-out, materialised mention inbox vs query-on-read, and per-workspace vs global search index.
- SlackWorkspace-first model; channels + DMs + threads; ~20 M DAU; enterprise tier with E2E options.
- DiscordServer-first (server = workspace); voice channels first-class; 200 M MAU.
- Microsoft TeamsWorkspace + channels + threading + video; deep M365 integration.
- Mattermost / Rocket.ChatSelf-hosted Slack analogues; same architecture, smaller scale per tenant.
Your task: read the problem above, then write what the system is, who uses it, the rough scale, and the headline UX expectation — in your own words. Submit for AI review when you're ready.
Click any step in the sidebar to jump around — sections don't have to be done in order. Press ? any time to see all shortcuts.