Functional Requirements:
Non-Functional Requirements:
POST /register → Register new user.
POST /login → Authenticate user.
GET /users/{id}/presence → Check online status.
POST /messages/send → Send message.
GET /messages/{conversation_id} → Fetch messages.
POST /groups/create → Create group.
POST /groups/{id}/add_member → Add user to group.
POST /messages/{id}/delete → Delete/edit message.
POST /messages/{id}/read → Mark message as read.
Relationships:
API Gateway
Authentication Service
User Service
Conversation Service
Message Service
Notification Service
Presence Service
Media Service (file storage, CDN)
WebSocket Gateway / Message Broker
Database Cluster (SQL for metadata, NoSQL for message storage)
Cache Layer (Redis, Memcached)
Search Engine (Elasticsearch for message search)
Send message:
Receive message:
Message Service:
WebSocket Gateway:
Notification Service:
WebSocket server crash → failover, reconnect from client.
Message broker lag → scale Kafka partitions.
Cache eviction → fallback to DB, monitor hit ratio.
Database hot partitions → shard carefully by conversation_id.