Skip to content

Latest commit

 

History

History
79 lines (57 loc) · 2.34 KB

File metadata and controls

79 lines (57 loc) · 2.34 KB

Crypto Wallet Test Assignment

Simple Android app built with Dynamic SDK.

Implemented 3 screens:

  1. Login (Email OTP + modal bottom sheet verification)
  2. Wallet Details (Sepolia + balance)
  3. Send Transaction

Architecture Description

Architecture is MVVM + Repository + Hilt DI.

  1. UI layer:
  • Jetpack Compose screens
  • Material Design 3 components
  • StateFlow-driven UI state
  • feature-first structure:
    • feature/login/ui
    • feature/walletdetails/ui
    • feature/send/ui
  1. ViewModel layer:
  • @HiltViewModel
  • business logic for login, wallet loading, and transaction sending
  • loading/error/success states
  1. Data layer (repositories):
  • core/data/repository/AuthRepository for OTP and logout
  • core/data/repository/WalletRepository for EVM wallet, Sepolia switch, balance
  • core/data/repository/TransactionRepository for EVM send transaction
  1. 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.

How To Run

  1. Open project root in Android Studio:
  • AndroidStudioProjects/CryptoWallet
  1. Create Dynamic project in app.dynamic.xyz

  2. Set your environmentId in:

  • CryptoWallet/ExampleApp/DynamicSDKExample/src/main/java/com/dynamic/sdk/example/MainActivity.kt
  1. Ensure redirect scheme matches:
  • redirectUrl in MainActivity.kt
  • <data android:scheme="..."> in CryptoWallet/ExampleApp/DynamicSDKExample/src/main/AndroidManifest.xml
  1. Sync Gradle and run app configuration on emulator/device.

  2. (For sending tx) Fund your wallet with Sepolia ETH:

Screenshots (3 Screens)

Place screenshots in:

  • docs/screenshots/login.png
  • docs/screenshots/wallet.png
  • docs/screenshots/send.png

Preview:

Login Wallet Details Send Transaction

Assumptions Made

  1. Dynamic environment has EVM wallet support enabled.
  2. Sepolia network (11155111) is available in the Dynamic environment.
  3. User can receive Email OTP and complete verification.
  4. User has Sepolia ETH for transaction testing.