Blog Infos
Author
Published
Topics
Published
Disclaimer
Defining The Task
Gathering Requirements
Functional requirements
Non-functional requirements
Out of scope
High-Level Diagram

High-Level Diagram

Server-side components:
Client-side components:
Deep Dive
Deep Dive: API Service
1. Bi-directional Communication Layer
{
  connection_id: String?
  event_type: "HELLO|MSG_IN|MSG_OUT|MSG_READ|BUY"
  payload: { ... }
}

Job Offers

Job Offers

There are currently no vacancies.

OUR VIDEO RECOMMENDATION

No results found.

Jobs

2. HTTP-based layer
3. Cloud Messaging Layer
{
  user_id: String
  messages: [
    {
      user_name: String
      text: String
      created_at: String
    },
    ...
  ]
}
API Service Diagram

API Service Diagram

ChatMessageData:
+ id: String
+ user_id: String
+ text: String
+ status: String
+ created_at: Long
+ attachments: String // comma-separated list

Candidate: “You can convert it into a model object.”

ChatMessage
+ id: String
+ userId: String
+ text: String
+ status: ChatMessageStatus
+ createdAt: Date
+ attachments: [Attachments]
Deep Dive: Data Model

Entity-relationship “like” Diagram

ChatInfo:
+ chatId: String
+ lastUsername: String
+ lastUserProfileUrl: Url
+ lastMessageText: String
+ lastMessageTimestamp: Date
Deep Dive: Attachments
Follow-up Questions
Timestamps
Security & Privacy
Conclusion
Looking for more content?

YOU MAY BE INTERESTED IN

YOU MAY BE INTERESTED IN

blog
Below is a simple framework for Mobile System Design interviews. As an example, we…
READ MORE
blog
Imagine Android as a sophisticated high-rise building. The foundation (kernel) supports the structure, the…
READ MORE
blog
This document extends the LLD of Instagram Stories by mapping it into Android system…
READ MORE
blog
Study open-source projects — not every project is perfect but you can still learn…
READ MORE
Menu