← All workWeb / Mobile

Messenger Application

A full-featured real-time mobile messenger combining random stranger matchmaking, username search, friends, and public/private group chats with encrypted messaging, voice and video, and a built-in trust-and-safety layer. React Native client over a WebSocket backend, with a large admin and analytics panel.

Role

Developer

Year

2025

Built with
React Native
Expo
TypeScript
WebSocket
Express
MongoDB
Stripe
Mockup
Screenshot 1
Screenshot 2
Screenshot 3
Screenshot 4

This is a complete messaging product rather than a chat demo. The mobile client is built in React Native following a strict MVVM architecture which keeps a large, feature-dense app maintainable. The backend runs a raw WebSocket server alongside Express and MongoDB, with all real-time traffic flowing over the socket: message delivery, typing indicators, online-status fan-out to every participant across a user's shared chats, emoji reactions, and message edit/delete.

The signature feature is the live matchmaking engine. Users enter a queue over the WebSocket and are paired by an interest-compatibility score, with gender, age-range, and mutual-block filters applied before a match is made. A matched pair gets a temporary chat that quietly archives itself unless both people add each other as friends before it expires, the mechanic that converts a random encounter into a lasting connection. Around that core sits a deep feature set: AES-CBC encrypted message content, photo/video/voice messages with waveform playback, inbound message translation via Google Cloud Translate, group chats with owner/admin/direct-access roles, and friend requests and peer trust-score ratings delivered as in-chat system messages. Trust and safety is built in rather than bolted on: video-based face verification with an admin review queue, a peer trust-scoring system, and blocking, reporting, warnings, and suspensions enforced live over the socket. Monetization runs through premium tiers (in-app purchase plus Stripe) that gate random-chat volume, with ads on the free tier. A separate AdminJS-based panel provides roughly thirty analytics and moderation views.

Key challenges

Real-time fan-out over a raw WebSocket: keeping presence, typing state, reactions, and edits consistent across every participant in every shared chat, in real time.

The matchmaking engine: scoring queued users by interest compatibility while honoring gender/age filters and excluding mutually blocked pairs and existing chats.

The random-chat-to-friendship lifecycle. Temporary chats that auto-archive on expiry unless both users mutually friend each other.

Implementing AES-CBC message-content encryption on a mobile client with correct IV handling and padding.

A real trust-and-safety pipeline: video face verification with admin states, peer trust scoring, and live enforcement of suspensions through the socket.

Holding a strict MVVM structure across a large React Native codebase so the feature breadth stayed maintainable.