How nova-scotia-digital-service/ns-mobile-wallet works
BC Wallet Mobile is a React Native digital-credential wallet. Its documented user journey spans onboarding and setup, identity evidence collection, credential handling, and proof-request interactions; the app shell composes navigation, providers, and app-specific dependency wiring. README documentation describes issuer, ledger, and mediator services, while source excerpts expose only selected runtime relationships, so unverified service links are marked dashed.
Main entry points: VerifiedPersonStack.tsx Verified-person flow · App.tsx Application shell · initialize-agent.ts Agent initialization · store.tsx Wallet state
Components 33
App Shell
- Native entry
app/index.js - Application shell
app/App.tsx - App wiring
app/container-imp.ts - Wallet state
app/src/store.tsx
Identity Setup
- Onboarding
app/src/screens/OnboardingPages.tsx - Preface
app/src/screens/Preface.tsx - Terms acceptance
app/src/screens/Terms.tsx - Initialization screen
app/src/screens/Splash.tsx - Verified-person flow
app/src/modules/unified/navigators/VerifiedPersonStack.tsx - Verification steps
app/src/modules/unified/screens/VerificationSteps.tsx - Evidence collection
app/src/modules/unified/screens/EvidenceCollectionStep.tsx - Evidence choices
app/src/modules/unified/contents/EvidenceCollectionStep/Choose.tsx - Birthdate entry
app/src/modules/unified/contents/EvidenceCollectionStep/Birthdate.tsx - Manual serial entry
app/src/modules/unified/contents/EvidenceCollectionStep/ManualSerial.tsx - Identity scan
app/src/modules/unified/contents/EvidenceCollectionStep/Scan.tsx - Address step
app/src/modules/unified/screens/ResidentialAddressStep.tsx - Email step
app/src/modules/unified/screens/EmailStep.tsx - Identity verification
app/src/modules/unified/screens/VerifyIdentityStep.tsx
Wallet Experience
- Wallet home
app/container-imp.ts - Credential exchange
app/App.tsx - Proof requests
app/App.tsx - Web display
app/src/screens/WebDisplay.tsx
Agent Runtime
- Agent initialization
app/src/hooks/initialize-agent.ts - Agent modules
app/src/helpers/bc-agent-modules.ts - Push notifications
app/src/helpers/PushNotificationsHelper.ts
App Support
- Developer settings
app/src/screens/Developer.tsx - IAS environments
app/src/screens/IASEnvironment.tsx - Remote log warning
app/src/screens/RemoteLogWarning.tsx - Localization
app/src/index.ts
Other components
- Wallet user
- Von Network ledger
- Mediator service
- Credential issuer
Connections 33
- Wallet user → Native entry: opens
app/index.js - Native entry → Application shell: registers
app/index.js - Application shell → App wiring: initializes
app/App.tsx - Application shell → Wallet state: provides state
app/App.tsx - Application shell → Web display: renders
app/App.tsx - App wiring → Wallet home: registers UI
app/container-imp.ts - App wiring → Push notifications: activates
app/container-imp.ts - Wallet user → Onboarding: begins setup
- Onboarding → Preface: continues
- Preface → Terms acceptance: continues
- Terms acceptance → Wallet state: reads agreement
app/src/screens/Terms.tsx - Initialization screen → Agent initialization: starts agent
- Agent initialization → Agent modules: uses modules
app/src/hooks/initialize-agent.ts - Agent initialization → Push notifications: configures
app/src/hooks/initialize-agent.ts - Verified-person flow → Verification steps: routes to
app/src/modules/unified/navigators/VerifiedPersonStack.tsx - Verified-person flow → Evidence collection: routes to
app/src/modules/unified/navigators/VerifiedPersonStack.tsx - Verified-person flow → Address step: routes to
app/src/modules/unified/navigators/VerifiedPersonStack.tsx - Verified-person flow → Email step: routes to
app/src/modules/unified/navigators/VerifiedPersonStack.tsx - Verified-person flow → Identity verification: routes to
app/src/modules/unified/navigators/VerifiedPersonStack.tsx - Evidence collection → Evidence choices: renders choice
app/src/modules/unified/screens/EvidenceCollectionStep.tsx - Evidence collection → Identity scan: renders scanner
app/src/modules/unified/screens/EvidenceCollectionStep.tsx - Evidence collection → Manual serial entry: renders entry
app/src/modules/unified/screens/EvidenceCollectionStep.tsx - Evidence choices → Wallet state: updates state
app/src/modules/unified/contents/EvidenceCollectionStep/Choose.tsx - Birthdate entry → Wallet state: updates state
app/src/modules/unified/contents/EvidenceCollectionStep/Birthdate.tsx - Manual serial entry → Wallet state: updates state
app/src/modules/unified/contents/EvidenceCollectionStep/ManualSerial.tsx - Wallet user → Credential exchange: receives credentials
- Wallet user → Proof requests: reviews requests
- Credential exchange → Credential issuer: exchanges credentials
- Agent initialization → Von Network ledger: connects to ledger
- Agent initialization → Mediator service: uses mediator
- Developer settings → IAS environments: opens settings
app/src/screens/Developer.tsx - Developer settings → Remote log warning: opens warning
app/src/screens/Developer.tsx - Application shell → Localization: loads resources
app/index.js