Backend Developer for Chat App Features

via Freelancer ·

Budget / Salary$250–750
TypeFreelance project
LocationRemote
Posted3 hours ago
We are seeking an experienced Backend Developer to implement new messaging, media, privacy, and VoIP signaling, Screen Sharing features into our existing WhatsApp-like communication platform.

Tech Stack:
Backend: Node.js, Fastify, PrismaORM, MySQL
Real-time & Media: WebSockets, Mediasoup (Audio/Video calls)

Note: You will only be responsible for the backend development (REST APIs, WebSocket events, database schema updates, background jobs, and Mediasoup signaling). Our mobile development team will handle all front-end/app integration.

1. Chat & Messaging Module**

* **Message Reactions & Replies:**
* Add API endpoints and WebSockets/Socket events for attaching reactions (emoji) to specific `message_id`s.
* Support threaded replies by referencing `parent_message_id` in the message creation payload.

* **Message Editing:**
* Allow sender to update message content within a 10-minute window (`created_at` validation). Reject edits after 10 minutes.

* **Message Deletion:**
* Implement soft deletion (`is_deleted` flag). Return a standardized placeholder text/status for deleted messages in chat history APIs so the client can apply custom styling.
* Support hard/soft deletion of group conversations on a per-user basis (user-level chat visibility flag).

* **Ephemeral Messaging (Auto-Erase & Disappearing):**
* **View-Once (Auto-Erase):** Add a flag to immediately wipe message content from DB/storage once read receipts are acknowledged by both sides.
* **Disappearing Messages:** Support timer settings (`1h`, `6h`, `24h`, `7d`, `30d`, `90d`). Schedule background cleanup jobs (e.g., Redis TTL or Cron) to hard-delete expired messages for both sender and recipient.

2. Media & File Management**

* **File Metadata & Forwarding:**
* Preserve original file metadata (`original_filename`, `mime_type`, `file_size`) on upload.
* Create a message forwarding endpoint that duplicates file/media attachment references without re-uploading.

* **Media Album Grouping:**
* Accept batch uploads and assign a unified `media_group_id` or array of attachment IDs within a single message object.

* **Compression & Quality Options:**
* Expose upload parameters/endpoints handling both original quality files and server-side/client-side compressed variants.

### **3. Privacy & Security Policies**

* **Live Location Sharing:**
* Implement real-time location streaming over WebSockets with configurable expiration durations (`1h`, `3h`, `6h`, `24h`).
* Obfuscate/encrypt structural location URLs on the backend.

* **Private Chat Flags:**
* Add a `is_private_chat` status flag in conversation schemas. Deliver this flag via API so mobile clients can enforce restrictions (blocking screenshots, file downloads, text copying, and forwarding).

4. Calling & VoIP Signaling System**

* **Group Calling Logic & Constraints:**
* **Member Count Limitation (Group Call Visibility Flag):**
* Include a boolean flag `is_group_call_enabled` in the group metadata/details API response.
* **Rule:** Set `is_group_call_enabled = false` if `total_group_members >= 30`. This signals the client app to completely hide the group call button.

* **Max Participant Cap (Dynamic Room State via WebSockets):**
* Enforce a maximum limit of **20 active participants** per call room.
* Track current active participant count on the backend.
* When the active count reaches 20, emit a real-time socket event (e.g., `call_room_full` or updated `room_capacity_status`) to all remaining unjoined group members.
* This event informs the client app to immediately hide or disable the "Join Call" button for unjoined members while the call is full.
* If a participant leaves and the count drops below 20, emit an updated state event to re-enable the "Join Call" button for unjoined members.

* **Mid-Call Invitations:**
* Support adding new participants dynamically to an active call room up to the 20-participant cap.

5. Screen Sharing
*Develop as zoom or google meet premium control. (Mute all, audio lock, video lock, restricted presentation, make co- host, remove co-host, unmute single participant, hand rise, share screen, react, chat, photo, video, file share when meeting
*Extra control for creator: Per minute rate call rate. Participants pay call rate from Main Wallet, Creator Earn to Main Wallet (deduct 6% as platform charge)
*Meeting link create: Company charge from creator per hour as platform fee, $1/2/3/ Billed per hourly.
*When creator set call rate 0 (Zero) that means participants no need charge.

More information will be provided after disscussion.
php javascript voip mysql node.js software development backend development database management web application rest api
Apply on Freelancer →

Project sourced from Freelancer.com. Applications happen directly on the original platform — we never collect your data.