38. Design a Chat App (WhatsApp)
1
The interview prompt2
38.1 What do you ask first?3
38.2 How big is this, really?4
38.3 What are the doors?5
38.4 What do we store?6
38.5 What does the whole system look like?7
38.6 How does the WebSocket gateway work?8
38.7 How do message IDs and ordering work?9
38.8 How do delivery and read ticks work?10
38.9 How does offline delivery work?11
38.10 How does group chat work?12
38.11 How does media work?13
38.12 What would you say in the last five minutes?14
Score yourself15
Variations to practise16
Sources17
Code lab38. Design a Chat App (WhatsApp)
38.3 What are the doors?
3 min read+10 XP
Step 3: API and data model (10 minutes)
Chat runs over a WebSocket per device (Chapter 21), with small messages both ways:
client → server { "type": "send", "chat": "c1", "client_id": "a-002", "body": "<ciphertext>" }
server → client { "type": "ack", "client_id": "a-002", "seq": 2 } ← one tick
server → client { "type": "msg", "chat": "c1", "seq": 2, "from": "asha", "body": "<ciphertext>" }
client → server { "type": "delivered", "chat": "c1", "upto": 2 } ← device has it
client → server { "type": "read", "chat": "c1", "upto": 2 } ← user saw it
client → server { "type": "sync", "chat": "c1", "after": 2 } ← after reconnecting
Plus HTTPS for login, contacts, group management, and media upload (presigned URLs, Chapter 11).