Collaborative System · Easy
Design a Task Management Application
Drag a component from the left onto the canvas
Scenario brief
Goal
Design a simple task manager (boards / lists / tasks): create, update, assign, and list tasks — Trello/Asana at Easy depth.
Functional requirements
- CRUD tasks (title, status, assignee).
- List tasks by project/board with basic filters.
- Multiple users share the same backend data.
Non-functional requirements
- Tasks must be durable across restarts.
- List/CRUD latency should feel snappy for interactive UI.
- App tier should scale horizontally behind a load balancer.
Scale assumptions
Assume ~50k DAU, each opens the app ~5 times/day, ~10 list reads per session. Total tasks on the order of ~10M. Reads dominate writes.
Your canvas task
Draw classic layering: Client → edge (LB/Gateway) → App Server → durable DB. No direct Client → DB.
Capacity check (optional)
Optional — 2 quick estimates from the scale above. Skip anytime; skipping does not fail you, it only skips a small bonus.
1.~50k DAU × 5 opens/day × 10 list reads ≈ 2.5M list reads/day. About how many list reads per second on average?
2.You store ~10M tasks and each row averages ~1 KB. Rough total storage for task rows?