Back to projects
  • Mobile App
  • Jan-Jun 2025

NKRI

Mobile Developer · Mitra Informatika

A real-time messaging application for personal and group chat, file sharing, and calling, built during an internship as one of two mobile developers. I worked on message dispatching, reconnection handling, search, and a WebRTC calling prototype.

Three phone screens showing the NKRI messaging app, with a chat thread containing a photo attachment, the login screen, and the chat list with unread, group, and favorite filters.
  • ContributionReal-time communicationMessage dispatching, reconnect handling, background service, and activity status.
  • PrototypeVoice and video callsWebRTC signaling prototype, not a shipped calling platform.
  • Project statusMaintained by the companyMy contribution covered the internship period, January to June 2025.

Overview

NKRI is a real-time communication app for personal and group chat, file sharing, and voice or video calls. I joined it during my internship at Mitra Informatika from January to June 2025, as one of two mobile developers in a six-person cross-role team.

The mobile app is built with Flutter and a shared set of reusable UI components. Riverpod manages state, Isar stores local data, Dio handles HTTP requests, and AutoRoute manages navigation. Real-time traffic moved from Socket.IO to WebSocket during my time there.

I worked on the mobile client. The company maintains the product, keeps the source code private, and owns the back-end services, so this case study covers my mobile contribution only. The screenshots use demo data.

The calling feature stayed a prototype. We built personal voice and video calls on WebRTC with WebSocket signaling, covering the offer and answer exchange, ICE candidates, media streams, call state, and the flow for accepting and ending a call.

My responsibilities

  • Worked on the real-time communication module as one of two mobile developers, from message dispatching through background service integration.
  • Migrated real-time traffic from Socket.IO to WebSocket and handled reconnection and user activity status.
  • Built the voice and video call prototype with WebRTC signaling, including offer and answer exchange, ICE candidates, media streams, and call state.
  • Added message search, message filtering, and chat-room pagination with Riverpod, including debounce and end-of-data handling.
  • Contributed to attachment upload and download for images, documents, voice notes, and video, including media preview, group details, member list, room metadata, group photo, and the start of the group creation flow.
Back to projects