Simple Android app built with Dynamic SDK.
Implemented 3 screens:
- Login (Email OTP + modal bottom sheet verification)
- Wallet Details (Sepolia + balance)
- Send Transaction
Architecture is MVVM + Repository + Hilt DI.
- UI layer:
- Jetpack Compose screens
- Material Design 3 components
StateFlow-driven UI state- feature-first structure:
feature/login/uifeature/walletdetails/uifeature/send/ui
- ViewModel layer:
@HiltViewModel- business logic for login, wallet loading, and transaction sending
- loading/error/success states
- Data layer (repositories):
core/data/repository/AuthRepositoryfor OTP and logoutcore/data/repository/WalletRepositoryfor EVM wallet, Sepolia switch, balancecore/data/repository/TransactionRepositoryfor EVM send transaction
- DI:
- Hilt modules in
core/di/AppModule.kt - app entry with
@HiltAndroidApp
Navigation flow:
Login -> Wallet Details -> Send Transaction- OTP code verification is handled in Login via modal bottom sheet.
- Open project root in Android Studio:
AndroidStudioProjects/CryptoWallet
-
Create Dynamic project in app.dynamic.xyz
-
Set your
environmentIdin:
CryptoWallet/ExampleApp/DynamicSDKExample/src/main/java/com/dynamic/sdk/example/MainActivity.kt
- Ensure redirect scheme matches:
redirectUrlinMainActivity.kt<data android:scheme="...">inCryptoWallet/ExampleApp/DynamicSDKExample/src/main/AndroidManifest.xml
-
Sync Gradle and run
appconfiguration on emulator/device. -
(For sending tx) Fund your wallet with Sepolia ETH:
Place screenshots in:
docs/screenshots/login.pngdocs/screenshots/wallet.pngdocs/screenshots/send.png
Preview:
- Dynamic environment has EVM wallet support enabled.
- Sepolia network (
11155111) is available in the Dynamic environment. - User can receive Email OTP and complete verification.
- User has Sepolia ETH for transaction testing.


