Mobile Wallet Integration Complete
Date: 2025-12-12
Status: ✅ PRODUCTION READY
Overview
The CoopWallet mobile app is fully integrated with the ICN backend. All core features are wired and working:
- ✅ Authentication with secure key storage
- ✅ Balance display with real-time updates
- ✅ Payment sending/receiving
- ✅ QR code generation and scanning
- ✅ Governance proposals and voting
- ✅ Identity verification (SDIS Level 1)
- ✅ Trust attestations
- ✅ Transaction history
- ✅ WebSocket real-time events
- ✅ Offline mode with operation queue
- ✅ Push notifications infrastructure
Architecture
┌─────────────────────┐
│ CoopWallet App │
│ (React Native) │
└──────────┬──────────┘
│
├─── @icn/react-native SDK
│ ├─── Wallet (Ed25519 keys)
│ ├─── Client (API wrapper)
│ ├─── Hooks (React integration)
│ └─── Queue Manager (offline ops)
│
├─── REST API (HTTPS)
│ └─── https://api.icn.zone/v1/*
│
└─── WebSocket (WSS)
└─── wss://api.icn.zone/v1/ws
Features Implemented
1. Authentication & Security
- Ed25519 Keypairs stored in device secure storage
- Challenge-response auth with JWT tokens
- Biometric unlock (optional) for iOS/Android
- DID-based identity (did:icn:...)
2. Payment Features
- Send payments to other members by DID
- Receive via QR code generation
- Scan to pay QR code scanning
- Transaction history with filtering
- Real-time balance updates via WebSocket
3. Governance
- View proposals from cooperative domain
- Cast votes (for/against/abstain)
- Live tally updates via WebSocket
- Proposal notifications
4. Identity & Verification (SDIS)
- View identity card with member stats
- Generate proofs (membership, age, reputation)
- Verify others via QR code scan
- Verification history tracking
5. Trust Graph
- View trust score on profile
- Attest trust for other members
- Trust score calculation (backend)
6. Offline Mode
- Queue operations when offline
- Automatic retry when back online
- Persistent queue in secure storage
- Network state detection
7. Push Notifications
- Event subscriptions (payments, proposals, trust)
- Toast notifications in-app
- Background notification infrastructure ready
Screens
| Screen | Status | Features |
|---|---|---|
| Login | ✅ | Coop ID input, key generation, challenge-response |
| Home | ✅ | Balance card, quick actions, recent transactions |
| Payment | ✅ | Send form, validation, confirmation |
| Receive | ✅ | QR code generation, DID display, amount request |
| Scan | ✅ | QR scanner, manual entry fallback |
| Governance | ✅ | Proposal list, voting, live updates |
| Identity | ✅ | Profile card, proof generation, credentials |
| Verify | ✅ | Scan verification QR, result display |
| Trust Attestation | ✅ | Attest trust for members |
| Transactions | ✅ | Full history, filtering, summary stats |
| Settings | ✅ | Preferences, key export, account management |
SDK Methods
All methods implemented in @icn/react-native:
Authentication
login(coopId, scopes)- Authenticate with cooperativelogout()- Clear auth stateinitialize()- Load persisted session
Payments
getBalance(coopId, did)- Get current balancepay(coopId, payment)- Send paymentgetHistory(coopId, options)- Transaction history
Governance
listProposals(domainId)- List proposalsgetVotes(proposalId)- Get vote tallyvote(proposalId, choice)- Cast vote
Identity
getMemberProfile(coopId, did)- Get member profileverifyLevel1(qrData)- SDIS Level 1 verification
Trust
attestTrust(coopId, target, score, metadata)- Attest trustgetTrustScore(coopId, did)- Get trust score
Real-time
connectRealtime(coopId)- Connect WebSocketdisconnectRealtime()- Disconnect WebSocketonEvent(eventType, handler)- Subscribe to events
WebSocket Events
The app subscribes to these real-time events:
PaymentCreated- New payment received or sentGovernanceProposalCreated- New proposal createdGovernanceVoteCast- Vote cast on proposalTrustAttestationCreated- Trust attestation madeIdentityVerified- Identity verification completed
Configuration
Gateway URL
Production: https://api.icn.zone
Edit in sdk/react-native/examples/CoopWallet/src/client.ts:
const GATEWAY_URL = 'https://api.icn.zone';
Secure Storage
- iOS/Android: Uses Expo SecureStore (hardware keychain)
- Web: Falls back to localStorage (development only)
Running the Wallet
Development
cd sdk/react-native/examples/CoopWallet
# Install dependencies
npm install
# Start Metro bundler
npm start
# Run on iOS simulator
npm run ios
# Run on Android emulator
npm run android
# Run on web (development)
npm run web
Production Build
# iOS
eas build --platform ios --profile production
# Android
eas build --platform android --profile production
Testing
Manual Testing Checklist
- Login with cooperative ID
- View balance and transaction history
- Send payment to another member
- Receive payment via QR code
- Scan payment QR code
- View governance proposals
- Cast vote on proposal
- View identity profile
- Verify another member's identity
- Attest trust for member
- Test offline mode (airplane mode)
- Test real-time notifications
- Logout and re-login
Integration Test
# Run wallet against local gateway
cd sdk/react-native/examples/CoopWallet
GATEWAY_URL=http://localhost:3030 npm start
Security Features
Secure Key Storage
- Ed25519 private keys never leave device
- Hardware-backed storage on iOS/Android
- Biometric protection optional
Transport Security
- HTTPS for all API calls
- WSS for WebSocket connections
- Certificate pinning (future)
Authentication
- Challenge-response prevents replay attacks
- JWT tokens with expiration
- Automatic token refresh
Data Privacy
- Minimal data collection
- No analytics by default
- Local-first storage
Deployment
App Store (iOS)
- Build release with Expo EAS
- Submit to Apple App Store Connect
- Pass TestFlight beta testing
- Release to production
Google Play (Android)
- Build release APK/AAB with Expo EAS
- Upload to Google Play Console
- Internal testing → Beta → Production
- Release to production
Web (PWA)
- Build web bundle:
expo build:web - Deploy to static hosting (Vercel, Netlify)
- Configure HTTPS and service worker
- Add to home screen support
Monitoring
Client-side Metrics
- Login success/failure rate
- Payment transaction times
- WebSocket reconnection frequency
- Offline queue size
- Error rates by screen
Backend Integration
- Gateway tracks API calls from mobile clients
- User-Agent header identifies mobile app
- Real-time dashboard shows active sessions
Known Issues
None currently. All features tested and working.
Future Enhancements
Phase 1 (Q1 2025)
- Multi-device sync
- Backup/restore with mnemonic phrase
- Advanced transaction filtering
- Payment request links (deep links)
Phase 2 (Q2 2025)
- Smart contracts interface
- Token exchange (hours ↔ fiat)
- Group payments (split bills)
- Recurring payments
Phase 3 (Q3 2025)
- Social features (member directory, messaging)
- Advanced governance (delegation)
- Reputation system visualization
- Multi-cooperative support
Support
- Documentation:
/docs/ - Issues: GitHub Issues
- Community: Discord channel
- Email: support@icn.coop
Snapshot conclusion (2024-12-12): CoopWallet integration was assessed as production-capable for the documented scope.