Design a 1:1 Messaging App
Requirements
Conversations
- User sees a list of conversations, with the most recently active conversations first.
- Scrolling down shows additional conversations.
- Tapping the compose button starts a new conversation.
Conversation
- User sees a list of messages sorted in order.
- Scrolling up reveals additional messages.
- User can insert a message and send it.
Ask from candidate
- Clear and comprehensive API proposal that meets the product needs.
- Clear and comprehensive data model proposal that fits the API design, is scalable, and reliable.
- Clear data flow for both online and offline messaging.
Non-requirements (the following are NOT in scope for this problem)
- User authentication
- Group chat (1:1 only)
- Read receipts
- Typing indicators
- Contact is online indicators
- Attachments
- Contact management. (You can pull contacts from the device or manually enter in a phone number.)
- Name entry. (We can assume that is pulled from the device.)
This Lyft VO question is a system design prompt for a 1:1 messaging app. The candidate is expected to propose the API surface for conversation lists and message threads, design a scalable and reliable data model for conversations and messages, and explain the end-to-end data flow for online and offline messaging. A strong solution typically covers reverse-chronological conversation ordering, cursor-based pagination for message history, message delivery and persistence, and sync behavior when the user reconnects. The scope is intentionally limited: no group chat, read receipts, typing indicators, online presence, attachments, or contact management.