Skip to content

[Feature] Nostr-based voice calls between driver and rider (Amethyst-style) #77

@variablefate

Description

@variablefate

Goal

Driver-app side of Nostr-signaled voice calling between driver and rider. Companion to variablefate/roadflare-ios#82 — see that issue for the full scope, design questions, and Amethyst reference.

In short: voice calls between matched rider/driver pairs, signaled over Nostr (likely adopting Amethyst's recently-introduced call-signaling kinds), with WebRTC for the actual audio channel. Preserves the trusted-driver-but-not-PII model — no phone-number exchange required.

Driver-app-specific concerns

The shared design questions (signaling kinds, WebRTC choice, lifecycle gating, etc.) are in the iOS issue. Items below are Drivestr Android-flavored:

  1. WebRTC library on Android. Google's WebRTC native build, or a maintained fork? Binary-size impact non-trivial.
  2. ConnectionService integration. Android equivalent of iOS CallKit. Optional but provides native-call-screen UX (lockscreen ringing, phone-app call history). Adds manifest declarations and review scrutiny but worth evaluating for v1 quality.
  3. Foreground service. Active-call audio session likely needs to live in or alongside the existing active-ride foreground service to survive Doze and background restrictions.
  4. Audio routing. Bluetooth headset, speakerphone toggle, in-call audio focus management. Same complexity surface as any voice app on Android.
  5. Microphone permission. Distinct from the existing location permission; handle the request UX so it doesn't surprise on first call.
  6. Push wake. FCM high-priority push for incoming-call wake-up. Need to confirm RoadFlare's relay subscription model can deliver call-offer events fast enough that a push isn't strictly required — or use FCM as a backup.

Cross-platform contract

Both apps speak the same call-signaling protocol — same Nostr kinds, same WebRTC SDP/ICE exchange shape, same accept/decline events. Worth defining in a shared spec doc co-authored with the iOS side before either implementation starts.

Effort

XL — multi-PR feature spanning protocol design, WebRTC integration, ConnectionService evaluation, microphone permission UX, parallel iOS implementation.

Priority

P4 — major feature, future enhancement. Not on the immediate roadmap. Filed so the idea is captured and discoverable.

Companion

iOS-side issue: variablefate/roadflare-ios#82

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions