Summary
Product doc section 4.3 specifies AirDrop-style proximity sharing via Bluetooth Low Energy (BLE). Implement the native BLE scanning and advertising layer in the React Native mobile app using react-native-ble-plx.
Context
This is one of DevCard's core differentiators. When two users are nearby and both have the app open, they should see each other's cards without needing a QR scan. The ScanScreen.tsx screen at apps/mobile/src/screens/ScanScreen.tsx is the natural mount point for the discovery flow.
Tasks
Acceptance Criteria
Difficulty
advanced — requires native BLE APIs, background permission handling, and cross-platform (iOS + Android) compatibility.
Summary
Product doc section 4.3 specifies AirDrop-style proximity sharing via Bluetooth Low Energy (BLE). Implement the native BLE scanning and advertising layer in the React Native mobile app using
react-native-ble-plx.Context
This is one of DevCard's core differentiators. When two users are nearby and both have the app open, they should see each other's cards without needing a QR scan. The
ScanScreen.tsxscreen atapps/mobile/src/screens/ScanScreen.tsxis the natural mount point for the discovery flow.Tasks
react-native-ble-plxinapps/mobile.AndroidManifest.xml(BLUETOOTH_SCAN,BLUETOOTH_ADVERTISE,ACCESS_FINE_LOCATION) andInfo.plistfor iOS.apps/mobile/src/context/BLEContext.tsxprovidingstartAdvertising(userId),startScanning(), anddiscoveredUsersstate.packages/shared/src/constants.ts.ProximityBannercomponent rendered onScanScreenshowing discovered users with a 'View Card' CTA.Acceptance Criteria
DevCardViewScreenwith the discovered user's data.Difficulty
advanced— requires native BLE APIs, background permission handling, and cross-platform (iOS + Android) compatibility.