Mobile: Nostr identity — Amber NIP-55 deep link + nsec fallback #29
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Problem
The web Workshop supports NIP-07 browser extension signing. The mobile app has no equivalent. Users cannot associate their Nostr identity with their mobile sessions, which means their jobs and zaps are not attributable.
What to build
Android: Implement NIP-55 Amber integration via Intent-based deep links. When signing is needed, launch an Intent to
com.greenart7c3.nostrsignerwith the event payload; receive the signed event back. Fall back gracefully if Amber is not installed (show install prompt with Play Store link).iOS: No NIP-55 equivalent exists. Offer manual nsec entry as the only option on iOS for now. Store the private key exclusively in Expo SecureStore — never in logs, Redux state, or AsyncStorage.
Both platforms: Show the connected npub (truncated) in the Settings screen. Provide a "Disconnect" option that wipes the key from SecureStore.
Acceptance criteria
PR created: http://143.198.27.163:3000/replit/timmy-tower/pulls/108
Implemented:
context/NostrContext.tsx): Android NIP-55 Amber deep-link flow + iOS/manual nsec fallback. Keys stored exclusively in Expo SecureStore.disconnect()wipes all credentials.components/NostrConnectModal.tsx): platform-aware bottom-sheet — Android shows Amber first + nsec fallback; iOS shows nsec only. Play Store redirect when Amber is absent.apiBaseUrl/setApiBaseUrl/isConnected; URL now persisted via AsyncStorage.nostr-toolsandexpo-secure-storeto mobilepackage.json.mobile://nostr-callbackinapp.json.