Navigation Graph
Complete navigation map of the app based on AppRoute sealed class and feature-internal routes.
1. All AppRoute Paths
58 top-level routes defined in common/routing/src/main/kotlin/com/tangem/common/routing/AppRoute.kt.
| # |
Route |
Path |
Description |
| 1 |
Initial |
/initial |
App entry point (splash) |
| 2 |
Home |
/home |
Stories/home screen with launch mode |
| 3 |
Welcome |
/welcome |
Welcome screen for returning users |
| 4 |
Disclaimer |
/disclaimer |
Terms of service / disclaimer |
| 5 |
Wallet |
/wallet |
Main wallet portfolio screen |
| 6 |
CurrencyDetails |
/currency_details/{walletId}/{currencyId} |
Token/coin detail screen |
| 7 |
Send |
/send/{walletId}/{currencyId} |
Send cryptocurrency |
| 8 |
Details |
/details/{walletId} |
Wallet details / settings hub |
| 9 |
DetailsSecurity |
/details/security |
Security mode settings |
| 10 |
Usedesk |
/usedesk/{walletId} |
Customer support (Usedesk) |
| 11 |
CardSettings |
/card_settings/{walletId} |
Card-specific settings |
| 12 |
AppSettings |
/app_settings |
Global app settings |
| 13 |
ResetToFactory |
/reset_to_factory/{walletId}/{cardId}/... |
Factory reset flow |
| 14 |
AccessCodeRecovery |
/access_code_recovery |
Access code recovery |
| 15 |
ManageTokens |
{source}/manage_tokens/{accountId} |
Add/remove tokens in portfolio |
| 16 |
ChooseManagedTokens |
/{source}/choose_managed_tokens/... |
Token chooser for send-via-swap |
| 17 |
WalletConnectSessions |
/wallet_connect_sessions |
WalletConnect sessions list |
| 18 |
QrScanning |
/{source}/qr_scanning |
QR code scanner |
| 19 |
ReferralProgram |
/referral_program |
Referral program |
| 20 |
Swap |
/swap/{fromId}/{toId}/{walletId}/... |
Token swap screen |
| 21 |
AppCurrencySelector |
/app_currency_selector |
Fiat currency selector |
| 22 |
Staking |
/staking/{walletId}/{currencyId}/{integrationId} |
Staking screen |
| 23 |
PushNotification |
/push_notification |
Push notification opt-in |
| 24 |
WalletSettings |
/wallet_settings/{walletId} |
Per-wallet settings |
| 25 |
WalletBackup |
/wallet_backup/{walletId}/{coldOption} |
Wallet backup options |
| 26 |
WalletHardwareBackup |
/wallet_hardware_backup/{walletId} |
Hardware wallet backup |
| 27 |
Markets |
/markets |
Markets token list |
| 28 |
MarketsTokenDetails |
/markets_token_details/{tokenId}/{showPortfolio} |
Market token detail |
| 29 |
Onramp |
/onramp/{walletId}/{symbol} |
Buy crypto (onramp) |
| 30 |
OnrampSuccess |
/onramp/success/{txId} |
Onramp success screen |
| 31 |
BuyCrypto |
/buy_crypto/{walletId} |
Buy crypto token selector |
| 32 |
SellCrypto |
/sell_crypto/{walletId} |
Sell crypto token selector |
| 33 |
Onboarding |
/onboarding_v2/{mode} |
Onboarding flow (v2) |
| 34 |
Stories |
/stories$storyId |
Stories / promotional content |
| 35 |
NFT |
/nft/{walletId} |
NFT collection list |
| 36 |
NFTSend |
/send/nft/{walletId}/{collection}/{assetId} |
Send NFT |
| 37 |
CreateWalletSelection |
/create_wallet_selection |
Choose wallet creation type |
| 38 |
CreateWalletStart |
/create_wallet_start |
Wallet creation intro (cold/hot) |
| 39 |
CreateHardwareWallet |
/create_hardware_wallet |
Create hardware wallet flow |
| 40 |
CreateMobileWallet |
/create_mobile_wallet |
Create mobile (hot) wallet |
| 41 |
UpgradeWallet |
/upgrade_wallet/{walletId} |
Upgrade hot wallet to hardware |
| 42 |
AddExistingWallet |
/add_existing_wallet |
Import existing wallet |
| 43 |
WalletActivation |
/wallet_activation/{walletId} |
Activate wallet post-creation |
| 44 |
CreateWalletBackup |
/create_wallet_backup/{walletId} |
Backup flow for created wallet |
| 45 |
UpdateAccessCode |
/update_access_code/{walletId} |
Change access code |
| 46 |
ViewPhrase |
/view_seed_phrase/{walletId} |
View recovery phrase |
| 47 |
ForgetWallet |
/forget_wallet/{walletId} |
Remove wallet from app |
| 48 |
SendEntryPoint |
/send_entry_point/{walletId}/{currencyId} |
Send entry with swap option |
| 49 |
CreateAccount |
/create_account/{walletId} |
Create new account |
| 50 |
EditAccount |
/edit_account/{accountId} |
Edit account |
| 51 |
AccountDetails |
/account_details/{accountId} |
Account details screen |
| 52 |
ArchivedAccountList |
/archived_account/{walletId} |
Archived accounts list |
| 53 |
TangemPayDetails |
/tangem_pay_details/{walletId} |
Tangem Pay card details |
| 54 |
TangemPayOnboarding |
/tangem_pay_onboarding/{mode} |
Tangem Pay onboarding |
| 55 |
Kyc |
/kyc |
KYC verification |
| 56 |
YieldSupplyEntry |
/yield_supply_entry/{walletId}/{symbol} |
Yield/supply entry point |
| 57 |
NewsDetails |
/news_details/{newsId} |
News article detail |
2. Navigation Edges
Each entry shows: Source route → target routes it can navigate to (via push or replaceAll).
Initial / Bootstrap
| Source |
Target |
Method |
Trigger |
Initial |
Home, Welcome, Disclaimer, Onboarding, etc. |
replaceAll |
App startup (DefaultRoutingComponent) |
Home
| Target |
Method |
Trigger |
ManageTokens(STORIES) |
push |
After scan, manage tokens |
CreateWalletStart |
push |
Create wallet from home |
Wallet |
replaceAll |
After wallet saved / already saved |
Welcome
| Target |
Method |
Trigger |
CreateWalletSelection |
push |
"Add new wallet" button |
Home() |
replaceAll |
When wallets list becomes empty |
Wallet |
replaceAll |
After scan / wallet unlock / biometric |
Disclaimer
| Target |
Method |
Trigger |
PushNotification(Stories) |
push |
After accepting TOS (stories flow) |
Home() |
replaceAll |
After accepting TOS (non-stories flow) |
Wallet (main portfolio)
| Target |
Method |
Trigger |
Details |
push |
Open wallet details |
ManageTokens(ACCOUNT) |
push |
Manage tokens for account |
Onboarding |
push |
Continue backup / onboarding |
CurrencyDetails |
push |
Tap on a token |
Home |
push |
Open stories |
NFT |
push |
Open NFT collection |
TangemPayOnboarding |
push |
Tangem Pay banner |
TangemPayDetails |
push |
Tangem Pay card details |
YieldSupplyEntry |
push |
Yield supply action |
QrScanning(MainScreen) |
push |
QR scanner |
Send |
push |
Send from QR / action |
WalletBackup |
push |
Backup warning banner |
CurrencyDetails (token details)
| Target |
Method |
Trigger |
Onramp |
push |
Buy action |
SendEntryPoint |
push |
Send action |
Swap |
push |
Swap action |
CurrencyDetails |
push |
Navigate to related token (from staking router) |
Staking |
push |
Open staking (from token details router) |
Details (wallet details hub)
| Target |
Method |
Trigger |
CreateWalletSelection |
push |
Add new wallet |
WalletSettings |
push |
Open wallet settings |
WalletConnectSessions |
push |
WalletConnect item |
AppSettings |
push |
App settings item |
Disclaimer(isTosAccepted=true) |
push |
View TOS |
Usedesk |
push |
Customer support |
TangemPayOnboarding(FromBannerInSettings) |
push |
Tangem Pay banner |
WalletSettings
| Target |
Method |
Trigger |
ReferralProgram |
push |
Referral program |
WalletHardwareBackup |
push |
Hardware backup |
CardSettings |
push |
Card settings |
ForgetWallet |
push |
Delete/forget wallet |
ViewPhrase |
push |
View seed phrase |
AccountDetails |
push |
Open account details |
ArchivedAccountList |
push |
View archived accounts |
CreateAccount |
push |
Create new account |
Home() |
replaceAll |
After wallet deletion completes |
WalletBackup
| Target |
Method |
Trigger |
WalletActivation |
push |
Start activation (no backup) |
ViewPhrase |
push |
View phrase option |
WalletHardwareBackup |
push |
Hardware backup option |
WalletHardwareBackup
| Target |
Method |
Trigger |
CreateHardwareWallet |
push |
Create new hardware wallet |
UpgradeWallet |
push |
Upgrade current hot wallet |
CreateWalletBackup |
push |
Backup existing wallet |
CreateWalletSelection
| Target |
Method |
Trigger |
CreateMobileWallet |
push |
Choose mobile wallet |
CreateHardwareWallet |
push |
Choose hardware wallet |
CreateWalletStart
| Target |
Method |
Trigger |
CreateMobileWallet |
push |
Create mobile wallet |
Wallet |
replaceAll |
After wallet creation completes |
CreateMobileWallet
| Target |
Method |
Trigger |
AddExistingWallet |
push |
Import existing wallet |
Wallet |
replaceAll |
After creation completes |
CreateHardwareWallet
| Target |
Method |
Trigger |
Wallet |
replaceAll |
After hardware wallet created |
AddExistingWallet
| Target |
Method |
Trigger |
Wallet |
replaceAll |
After import completes |
UpgradeWallet
| Target |
Method |
Trigger |
Onboarding(UpgradeHotWallet) |
push |
Start upgrade onboarding |
CreateWalletBackup
| Target |
Method |
Trigger |
UpgradeWallet |
push |
After backup, continue to upgrade |
AccountDetails
| Target |
Method |
Trigger |
EditAccount |
push |
Edit account |
ForgetWallet
| Target |
Method |
Trigger |
Home() |
replaceAll |
After wallet forgotten |
WalletConnectSessions
| Target |
Method |
Trigger |
QrScanning(WalletConnect) |
push |
Scan WC QR code |
Onboarding
| Target |
Method |
Trigger |
Home() |
replaceAll |
Onboarding completed (no wallets) |
Wallet |
replaceAll |
Onboarding completed (has wallets) |
PushNotification
| Target |
Method |
Trigger |
Home() |
replaceAll |
After push notification opt-in (via nextRoute param) |
Staking
| Target |
Method |
Trigger |
CurrencyDetails |
push |
Back to token details |
TangemPayDetails
| Target |
Method |
Trigger |
Swap |
push |
Top up / withdraw via swap |
NFT
| Target |
Method |
Trigger |
NFTSend |
push |
Send NFT |
Send (notifications)
| Target |
Method |
Trigger |
CurrencyDetails |
push |
Navigate to fee token |
Swap / BuyCrypto / SellCrypto
| Target |
Method |
Trigger |
Swap |
push |
After token selection (Swap) |
Onramp |
push |
After token selection (BuyCrypto/SellCrypto) |
Deep Link Handlers (push to AppRoute)
| Handler |
Target Route |
OnrampDeepLinkHandler |
Processes onramp callback params |
SellRedirectDeepLinkHandler |
Send (with sell redirect params) |
BuyDeepLinkHandler |
BuyCrypto |
SellDeepLinkHandler |
SellCrypto |
SwapDeepLinkHandler |
Swap |
ReferralDeepLinkHandler |
Referral handling |
WalletDeepLinkHandler |
Wallet handling |
TokenDetailsDeepLinkHandler |
CurrencyDetails |
StakingDeepLinkHandler |
Staking |
MarketsDeepLinkHandler |
Markets |
MarketsTokenDetailDeepLinkHandler |
MarketsTokenDetails |
WalletConnectDeepLinkHandler |
WalletConnect pairing |
PromoDeeplinkHandler |
Promo handling |
OnboardVisaDeepLinkHandler |
TangemPayOnboarding |
NewsDetailsDeepLinkHandler |
NewsDetails |
3. Nested Routes (Feature-Internal Navigation)
OnboardingRoute
File: features/onboarding-v2/impl/.../routing/OnboardingRoute.kt
| Route |
Description |
None |
Initial empty state |
Note |
Single-card onboarding note |
MultiWallet |
Multi-wallet onboarding (with seed phrase flow option) |
Visa |
Visa card onboarding |
Twins |
Twin cards onboarding |
ManageTokens |
Token management during onboarding |
AskBiometry |
Biometry setup prompt |
Done |
Onboarding completion |
WalletRoute
File: features/wallet/impl/.../navigation/WalletRoute.kt
| Route |
Description |
Wallet |
Main wallet view |
OrganizeTokens |
Reorder tokens in portfolio |
SendEntryRoute
File: features/send-v2/api/.../entry/SendEntryRoute.kt
| Route |
Description |
Send |
Direct send flow |
SendWithSwap |
Send with swap option |
ChooseToken |
Token chooser for send-via-swap |
CommonSendRoute (Send internal)
Used internally by SendModel and NFTSendModel:
Amount → Destination → Confirm → ConfirmSuccess
- Edit mode:
Confirm → Destination(edit) or Amount(edit)
FeeSelectorRoute (Send internal)
ChooseToken — select fee token
ChooseSpeed — select fee speed
WcInnerRoute (WalletConnect)
File: features/walletconnect/impl/.../routing/WcInnerRoute.kt
| Route |
Description |
Method.Send |
WC send transaction |
Method.SignMessage |
WC sign message |
Method.AddNetwork |
WC add network |
Method.SwitchNetwork |
WC switch network |
Pair |
WC pairing request |
UnsupportedMethodAlert |
Unsupported method alert |
WcDappDisconnected |
DApp disconnected alert |
TangemUnsupportedNetwork |
Unsupported network alert |
RequiredAddNetwork |
Required network add |
RequiredReconnectWithNetwork |
Required network reconnect |
TangemPayDetailsInnerRoute
File: features/tangempay/details/impl/.../navigation/TangemPayDetailsInnerRoute.kt
| Route |
Description |
Details |
Main details view |
ChangePIN |
Change PIN flow |
ChangePINSuccess |
PIN change success |
AddToWallet |
Add card to device wallet |
Transitions: Details → ChangePIN → ChangePINSuccess, Details → AddToWallet
FeedEntryRoute
File: features/feed/api/.../components/FeedEntryRoute.kt
| Route |
Description |
MarketTokenDetails |
Market token detail view |
MarketTokenList |
Markets list |
NewsDetail |
News article detail |
CreateWalletBackupRoute
File: features/hot-wallet/impl/.../createwalletbackup/routing/CreateWalletBackupRoute.kt
| Route |
Description |
RecoveryPhraseStart |
Backup intro |
RecoveryPhrase |
Show recovery phrase |
ConfirmBackup |
Confirm backup |
BackupCompleted |
Backup complete (with upgrade/last screen flags) |
Transitions: RecoveryPhraseStart → RecoveryPhrase → ConfirmBackup → BackupCompleted
AddExistingWalletRoute
File: features/hot-wallet/impl/.../addexistingwallet/entry/routing/AddExistingWalletRoute.kt
| Route |
Description |
Import |
Seed phrase import |
BackupCompleted |
Backup completed |
SetAccessCode |
Set access code |
ConfirmAccessCode |
Confirm access code |
PushNotifications |
Push notification opt-in |
SetupFinished |
Setup complete |
Transitions: Import → BackupCompleted → SetAccessCode → ConfirmAccessCode → PushNotifications → SetupFinished
UpdateAccessCodeRoute
File: features/hot-wallet/impl/.../updateaccesscode/routing/UpdateAccessCodeRoute.kt
| Route |
Description |
SetAccessCode |
Enter new access code |
ConfirmAccessCode |
Confirm new access code |
SetupFinished |
Update complete |
Transitions: SetAccessCode → ConfirmAccessCode → SetupFinished
WalletActivationRoute
File: features/hot-wallet/impl/.../walletactivation/entry/routing/WalletActivationRoute.kt
| Route |
Description |
ManualBackupStart |
Backup intro |
ManualBackupPhrase |
Show recovery phrase |
ManualBackupCheck |
Verify backup |
ManualBackupCompleted |
Backup success |
SetAccessCode |
Set access code |
ConfirmAccessCode |
Confirm access code |
PushNotifications |
Push notification opt-in |
SetupFinished |
Activation complete |
Transitions: ManualBackupStart → ManualBackupPhrase → ManualBackupCheck → ManualBackupCompleted → SetAccessCode → ConfirmAccessCode → PushNotifications → SetupFinished
4. Deep Links
URI Schemes
| Scheme |
Value |
Usage |
Tangem |
tangem:// |
Primary app deep links |
WalletConnect |
wc:// |
WalletConnect pairing |
Https |
https:// |
Web links (tangem.com) |
Tangem Scheme Routes (tangem://{host})
| Host |
Handler |
Target |
onramp |
OnrampDeepLinkHandler |
Onramp callback processing |
redirect_sell |
SellRedirectDeepLinkHandler |
Send (sell redirect with tx params) |
redirect |
— |
Buy redirect (no-op) |
buy |
BuyDeepLinkHandler |
BuyCrypto |
sell |
SellDeepLinkHandler |
SellCrypto |
swap |
SwapDeepLinkHandler |
Swap |
referral |
ReferralDeepLinkHandler |
Referral flow |
main |
WalletDeepLinkHandler |
Wallet screen |
token |
TokenDetailsDeepLinkHandler |
CurrencyDetails |
staking |
StakingDeepLinkHandler |
Staking |
markets |
MarketsDeepLinkHandler |
Markets |
token_chart |
MarketsTokenDetailDeepLinkHandler |
MarketsTokenDetails |
wc |
WalletConnectDeepLinkHandler |
WalletConnect pairing |
promo |
PromoDeeplinkHandler |
Promo handling |
onboard-visa |
OnboardVisaDeepLinkHandler |
TangemPayOnboarding |
HTTPS Routes (https://tangem.com/...)
| Path prefix |
Handler |
Target |
/pay-app |
OnboardVisaDeepLinkHandler |
TangemPayOnboarding |
/news |
NewsDetailsDeepLinkHandler |
NewsDetails |
Deep Link Readiness
Deep links are only processed when the app is on a "ready" route. These routes block deep link processing:
Initial, Home, Welcome, PushNotification, Disclaimer, Stories, Onboarding