Case study

Mobasher: messaging and live consultation

NestJS microservices for consulting, learning, messaging, and voice/video sessions.

My role: Backend developer on communication-heavy platform

Scope: Chat, VoIP, video sessions, SQL optimization, RabbitMQ, Angular integration

The problem

Consultant-client interactions needed a unified platform for messaging, calls, video sessions, and learning content.

My contribution

I developed communication services, integrated WebRTC, Socket.IO, and RabbitMQ with an Angular frontend, and optimized SQL stored procedures for frequently used screens.

Engineering decision

Keep session state separate from media delivery

Approach

Separate chat persistence, call/session coordination, and WebRTC media concerns. Use RabbitMQ for coordination and keep latency-sensitive socket paths direct.

Alternative and tradeoff

Putting durable session state only in socket handlers makes reconnect recovery fragile. Routing latency-sensitive interaction through every asynchronous service adds delay without necessarily improving durability.

Reviewing the behavior

Review reconnects, unauthorized room joins, duplicate events, session cleanup, and SQL retrieval under concurrent use. Distinguish a connected user from an active call and messaging latency from media latency.

Measurement and scope

In production, Mobasher supported 500+ concurrent users with observed messaging latency of 100–150 ms. These are my reported observations; the records are private. Messaging latency is separate from voice/video latency.