Building a Chat Application From Scratch: High-Level System Design

Building a chat application looks deceptively simple.