LIVE CALLS · WEBRTC · 100MS · BILLING · KOCHI, KERALA
AVAILABLE FOR WORKFreelance · Contract · Full-time

Live audio and video calls that behave across devices.

A call can work perfectly in the office and fail on a mid-range Android phone with a weak connection. I build the call flow, the media layer and the fallback behaviour together, including permissions, reconnects, billing events and the notifications that bring people back into the call.

Flutter · WebRTC · 100ms · LiveKit · Android & iOS · Remote worldwide

01 · CALL LIFECYCLE

The call starts before the room opens

Permissions, camera and microphone checks, network quality, ring state, joining, reconnecting, ending and billing all belong to the same flow. If those states live in different screens, users get stuck in a room that looks connected but has no audio.

I design the call state machine first, then wire it to the media provider and the backend. That makes it possible to show a useful message when the camera is unavailable, the network drops or the other person never joins.

02 · MEDIA LAYER

Use a managed provider where it earns its keep

100ms and LiveKit can remove a lot of WebRTC infrastructure work. The trade-off is cost, vendor lock-in and the limits of the provider's SDK. A custom WebRTC stack gives more control but needs TURN servers, monitoring and a team that can operate it. I help choose based on call volume, recording needs, moderation and budget.

Either way, the app still needs device testing. Audio routing, Bluetooth, speakerphone, camera switching and background behaviour vary across Android manufacturers. Those differences are where call products usually break.

03 · BILLING & SAFETY

A paid call needs a reliable meter

Per-minute billing, wallets, host payouts, refunds and failed-call handling need a source of truth on the server. The client should never be the only place that decides how long a call lasted. I build idempotent call events and reconcile them with the provider's webhooks.

Safety features — block, report, call recording consent, moderation and a clear policy for abusive behaviour — are part of the product, not an afterthought. I can build the flows and the admin tools around them.

WHAT'S INCLUDED

A call flow that handles the awkward moments

  • ✓
    One-to-one and group calls
    Audio or video rooms with host, participant and waiting states.
  • ✓
    Permission handling
    Camera, microphone and notification permissions with useful recovery paths.
  • ✓
    Reconnect logic
    Network changes, app backgrounding and rejoin behaviour.
  • ✓
    Device controls
    Speaker, earpiece, Bluetooth, camera switch and mute states.
  • ✓
    Billing events
    Server-side call duration, wallet or subscription charges and refunds.
  • ✓
    Push notifications
    Incoming call alerts and deep links into the right room.
  • ✓
    Moderation
    Report, block, remove participant and an admin review path.
  • ✓
    Provider integration
    100ms, LiveKit, Agora or a custom WebRTC stack.
SELECTED EXPERIENCE

Real products, practical engineering.

Explore examples of mobile, Smart TV and integrated product work.

Browse all projects ↗
COMMON QUESTIONS

Working together

Which provider do you use for calls?

It depends on the product. 100ms and LiveKit are good managed options; Agora is another. A custom WebRTC build makes sense when you need control that a provider cannot give you. I will recommend one after looking at call volume, recording, moderation and budget.

Why do calls work on one phone but not another?

Audio routing, camera behaviour, permissions and background restrictions vary by manufacturer and OS version. The fix is a device matrix and explicit fallback states, not assuming one emulator represents every phone.

Can you add per-minute billing?

Yes. The server records call events, calculates duration and charges a wallet or subscription. Provider webhooks are reconciled so a dropped client does not become a free call.

Can calls be recorded?

Recording is possible with some providers and custom stacks, but it brings consent, storage, privacy and app-store policy questions. We would decide the rules before implementation.

Do you handle incoming call notifications?

Yes. Push notifications, deep links and the in-app ring state are part of the flow. The exact behaviour depends on Android and iOS background restrictions.

Can the same product support chat and calls?

Yes. Chat, presence and call invitations can share the same account and conversation model. I would still build and test the call lifecycle separately.

LET’S TALK

Need this kind of help on your product?

Share the product, current stage and the support you need. I will review the context and suggest a practical next step.