{"type":"excalidraw","version":2,"source":"https://AwesomeSystemDesign.dev","elements":[{"angle":0,"strokeColor":"#6577aa","backgroundColor":"#eef1fc","fillStyle":"solid","strokeWidth":1.5,"strokeStyle":"solid","roughness":0.7,"opacity":100,"version":1,"versionNonce":1,"isDeleted":false,"groupIds":["step-1"],"frameId":null,"roundness":null,"boundElements":[{"type":"text","id":"shape-1"}],"updated":0,"link":null,"locked":false,"id":"shape-0","type":"rectangle","seed":41,"x":36,"y":32,"width":390,"height":293.40000000000003,"customData":{"revealStep":1}},{"angle":0,"strokeColor":"#394557","backgroundColor":"transparent","fillStyle":"solid","strokeWidth":1.5,"strokeStyle":"solid","roughness":0.7,"opacity":100,"version":1,"versionNonce":1,"isDeleted":false,"groupIds":["step-1"],"frameId":null,"roundness":null,"boundElements":null,"updated":0,"link":null,"locked":false,"id":"shape-1","type":"text","seed":114,"x":56,"y":50,"width":350,"height":257.40000000000003,"fontSize":18,"fontFamily":1,"text":"Phone is the primary device.\nWeb/Desktop are \"companion\"\ndevices.\nMessages relayed through phone.\n\n❌ Phone must be online for web to\nwork\n✅ Simple E2E model (one key set)\n\n(WhatsApp has since moved to multi-\ndevice with per-device keys)","originalText":"Phone is the primary device.\nWeb/Desktop are \"companion\"\ndevices.\nMessages relayed through phone.\n\n❌ Phone must be online for web to\nwork\n✅ Simple E2E model (one key set)\n\n(WhatsApp has since moved to multi-\ndevice with per-device keys)","textAlign":"center","verticalAlign":"middle","containerId":"shape-0","lineHeight":1.3,"autoResize":false,"customData":{"revealStep":1}},{"angle":0,"strokeColor":"#628572","backgroundColor":"#edf5ee","fillStyle":"solid","strokeWidth":1.5,"strokeStyle":"solid","roughness":0.7,"opacity":100,"version":1,"versionNonce":1,"isDeleted":false,"groupIds":["step-2"],"frameId":null,"roundness":null,"boundElements":[{"type":"text","id":"shape-3"}],"updated":0,"link":null,"locked":false,"id":"shape-2","type":"rectangle","seed":187,"x":466,"y":32,"width":390,"height":387,"customData":{"revealStep":2}},{"angle":0,"strokeColor":"#394557","backgroundColor":"transparent","fillStyle":"solid","strokeWidth":1.5,"strokeStyle":"solid","roughness":0.7,"opacity":100,"version":1,"versionNonce":1,"isDeleted":false,"groupIds":["step-2"],"frameId":null,"roundness":null,"boundElements":null,"updated":0,"link":null,"locked":false,"id":"shape-3","type":"text","seed":260,"x":486,"y":50,"width":350,"height":351,"fontSize":18,"fontFamily":1,"text":"Server stores all messages.\nEach device syncs independently.\n\nSync protocol:\n1. Each device tracks a sync_cursor\n(last message_id it has seen)\n2. On reconnect: \"give me everything\nafter cursor X\"\n3. While connected: real-time via WS\n\n✅ Any device works independently\n✅ Simple sync model\n❌ Server sees messages (no E2E\nunless\nusing per-device keys)","originalText":"Server stores all messages.\nEach device syncs independently.\n\nSync protocol:\n1. Each device tracks a sync_cursor\n(last message_id it has seen)\n2. On reconnect: \"give me everything\nafter cursor X\"\n3. While connected: real-time via WS\n\n✅ Any device works independently\n✅ Simple sync model\n❌ Server sees messages (no E2E\nunless\nusing per-device keys)","textAlign":"center","verticalAlign":"middle","containerId":"shape-2","lineHeight":1.3,"autoResize":false,"customData":{"revealStep":2}},{"angle":0,"strokeColor":"#a68a53","backgroundColor":"#fff7e6","fillStyle":"solid","strokeWidth":1.5,"strokeStyle":"solid","roughness":0.7,"opacity":100,"version":1,"versionNonce":1,"isDeleted":false,"groupIds":["step-3"],"frameId":null,"roundness":null,"boundElements":[{"type":"text","id":"shape-5"}],"updated":0,"link":null,"locked":false,"id":"shape-4","type":"rectangle","seed":333,"x":36,"y":459,"width":368.42404000000005,"height":270,"customData":{"revealStep":3}},{"angle":0,"strokeColor":"#394557","backgroundColor":"transparent","fillStyle":"solid","strokeWidth":1.5,"strokeStyle":"solid","roughness":0.7,"opacity":100,"version":1,"versionNonce":1,"isDeleted":false,"groupIds":["step-3"],"frameId":null,"roundness":null,"boundElements":null,"updated":0,"link":null,"locked":false,"id":"shape-5","type":"text","seed":406,"x":56,"y":477,"width":328.42404000000005,"height":234,"fontSize":18,"fontFamily":1,"text":"Each device has its own key pair.\nSender encrypts message N times\n(once per device of each recipient).\n\n✅ True multi-device E2E\n❌ More complex key management\n❌ More ciphertext per message\n\nUsed by: WhatsApp (since 2021),\nSignal, iMessage","originalText":"Each device has its own key pair.\nSender encrypts message N times\n(once per device of each recipient).\n\n✅ True multi-device E2E\n❌ More complex key management\n❌ More ciphertext per message\n\nUsed by: WhatsApp (since 2021),\nSignal, iMessage","textAlign":"center","verticalAlign":"middle","containerId":"shape-4","lineHeight":1.3,"autoResize":false,"customData":{"revealStep":3}},{"angle":0,"strokeColor":"#a68a53","backgroundColor":"#fff7e6","fillStyle":"solid","strokeWidth":1.5,"strokeStyle":"solid","roughness":0.7,"opacity":100,"version":1,"versionNonce":1,"isDeleted":false,"groupIds":["step-4"],"frameId":null,"roundness":null,"boundElements":[{"type":"text","id":"shape-7"}],"updated":0,"link":null,"locked":false,"id":"shape-6","type":"rectangle","seed":479,"x":36,"y":769,"width":467.8849,"height":257,"customData":{"revealStep":4}},{"angle":0,"strokeColor":"#394557","backgroundColor":"transparent","fillStyle":"solid","strokeWidth":1.5,"strokeStyle":"solid","roughness":0.7,"opacity":100,"version":1,"versionNonce":1,"isDeleted":false,"groupIds":["step-4"],"frameId":null,"roundness":null,"boundElements":null,"updated":0,"link":null,"locked":false,"id":"shape-7","type":"text","seed":552,"x":56,"y":787,"width":427.8849,"height":221,"fontSize":17,"fontFamily":1,"text":"Multi-Device Synchronization\n\nChallenge: User has phone + web + desktop.\nAll devices must show the same messages.\n\nApproach 1: WhatsApp (Phone-Primary)\n\nApproach 2: Slack / Telegram (Server-Primary) ⭐\n\nApproach 3: Multi-Device E2E","originalText":"Multi-Device Synchronization\n\nChallenge: User has phone + web + desktop.\nAll devices must show the same messages.\n\nApproach 1: WhatsApp (Phone-Primary)\n\nApproach 2: Slack / Telegram (Server-Primary) ⭐\n\nApproach 3: Multi-Device E2E","textAlign":"left","verticalAlign":"middle","containerId":"shape-6","lineHeight":1.3,"autoResize":false,"customData":{"revealStep":4}}],"appState":{"viewBackgroundColor":"#fbfbf8","gridSize":null},"files":{}}