Skip to content
mahadizulfiker
All work
Mobile app2026

Xcall Mobile

Android softphone that rings on the system call screen, one APK serving two brands.

Primary author69 of 73 commits on the mobile client.

One signed APK serving two brands, where an incoming call looks and behaves like any other call the phone receives.

A SIP calling app for Android, built so it behaves like the phone's own dialer rather than an app you have to be inside to receive a call. Signalling runs over JsSIP on a WebSocket with react-native-webrtc carrying the audio, and incoming calls raise the native Android call screen through CallKeep. One codebase and one signed APK serve two brands — Xcall and SeloraX — with the brand chosen at run time.

Problem

A softphone that only rings while the app is open in the foreground is a phone that misses calls. To be usable at all it has to ring on a locked screen, show the system call UI, and keep working after Android has decided the app is idle.

Constraint

Android aggressively suspends background work, and a SIP call arrives over a socket that has to still be alive when it does. The same binary also had to ship under two brands, so a second app in the store was not an option.

Decision

Signalling over JsSIP on a WebSocket with react-native-webrtc for audio, wired into CallKeep so an incoming call raises the real Android call screen instead of an in-app banner. A foreground service plus Firebase push keeps the connection reachable while the app is backgrounded, and the brand is selected at run time so both ship from one APK.

Tradeoff

CallKeep and the foreground-service library both needed local patches through patch-package. Carrying patches against native libraries is real maintenance debt on every React Native upgrade — the alternative was writing the native call-screen integration twice, once per platform, and owning that instead.

Result

One signed APK serving two brands, where an incoming call looks and behaves like any other call the phone receives.

next step

Open to full-time engineering roles.

I reply within a day.

Next project

Commerce ERP
Chat on WhatsApp