INTEGRATION · REAL-TIME · WEBRTC · AUDIO/VIDEO CALLING
AVAILABLE FOR WORKFreelance · Contract · Full-time

Real-time video calling integration for Flutter.

One-to-one and group calling built on a managed real-time vendor — signalling, permissions, background behaviour, billing per minute and the edge cases that make calls feel unreliable.

WebRTC · Agora · LiveKit · Zego · 1:1 and group calls

01 · BUILD VS BUY

Managed RTC or your own media servers

Rolling your own WebRTC stack means TURN servers, scaling, recording and global routing — months of infrastructure work before the first call. Managed vendors like Agora, LiveKit or Zego handle media transport and let the product focus on the experience.

Self-hosting makes sense when data residency or per-minute cost at very high volume demands it. For most products, managed is the right first answer.

02 · CALL FLOW

Signalling is where calls actually break

A call is a state machine: invite, ring, accept, connect, reconnect, end. Each state needs a record on your backend and a matching state in both apps. Miss one and users get stuck on a calling screen after the other side hung up.

Push notifications are usually needed to wake a backgrounded app, with the platform limits that implies — especially on iOS.

03 · BILLING

Charging for time without losing money

Paid calls need balance checks before connection, per-minute metering, grace periods for network drops and a clear end state. Metering on the client alone lets users disconnect the network to avoid charges.

I keep the authoritative call record on the server, with the vendor's usage events as a cross-check.

04 · QUALITY

Making calls feel stable

Camera and microphone permissions, audio routing to speaker or earpiece, Bluetooth handling, screen sharing, mute states and reconnection after a tunnel all affect whether a call feels professional.

Network quality indicators and graceful degradation matter more than maximum resolution.

WHAT'S INCLUDED

Calling from invite to invoice

  • ✓
    Vendor integration
    Agora, LiveKit, Zego or a WebRTC stack you already run.
  • ✓
    Call signalling
    Invite, ring, accept, reject, reconnect and end states.
  • ✓
    1:1 and group
    Two-party and multi-party rooms with layout handling.
  • ✓
    Permissions
    Camera, microphone and notification flows on both platforms.
  • ✓
    Audio routing
    Speaker, earpiece, Bluetooth and headset behaviour.
  • ✓
    Push wake-up
    VoIP and data notifications to reach backgrounded apps.
  • ✓
    Metering
    Server-side duration tracking, balance checks and billing records.
  • ✓
    Quality
    Network indicators, reconnection and adaptive bitrate.
SELECTED EXPERIENCE

Real products, practical engineering.

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

Browse all projects ↗
COMMON QUESTIONS

Working together

Which real-time vendor should I use for a Flutter app?

Agora and Zego are common for quick integration and global coverage; LiveKit suits teams that want more control or self-hosting. The right pick depends on group size, recording needs, data residency and per-minute cost.

Can calls work when the app is closed?

Partially. Incoming calls can wake an app using push notifications, but iOS restricts background behaviour unless you use CallKit with VoIP push. That needs to be designed early, not bolted on.

Can you add per-minute billing for calls?

Yes. Balance checks happen before connection and duration is tracked server-side, with the vendor's usage events used as a cross-check.

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.