Design a Chat App (WhatsApp)

hard
websockets
messaging
ordering
storage

Problem brief

A chat app like WhatsApp lets people send messages one-to-one and in small groups, see them arrive in real time, see who's online, and see sent / delivered / read ticks. The interesting parts aren't storage volume — they're keeping hundreds of millions of live connections open, routing a message to whichever server the recipient happens to be connected to, keeping every chat in a consistent order, and making sure a message still reaches a phone that was switched off when it was sent.

Practice workspace

Guided practice or a locally saved 45-minute mock.

Step 1 of 10

Functional Requirements

What are the core flows, and what would you explicitly leave out of version one?

Reference solution hidden

Try answering in the workspace above first. Reveal the full worked solution — data model, architecture, and trade-offs — whenever you want to compare.

Open the full solution page →