Collaborative System · Easy

Design a Task Management Application

Mini Map

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?