Skip to content

Latest commit

 

History

History
80 lines (63 loc) · 4 KB

README.md

File metadata and controls

80 lines (63 loc) · 4 KB

AffinidiID

⚠️ Since August 2023 Affinidi API stopped working. You can download mock build of the app.
Use [email protected] login and 1234567Ab password to get into the application.

About the app

Description

AffinidiID is a VC wallet app built for learning purpose. Created to dive into the technical aspects of Self-Sovereign Identity and Verifiable Credentials concepts using Affinidi open APIs. The app was created to pactice with Clean Architecture.

Actually, it's a native android client close to Affinidi wallet application but with the possibility to issue a test credential. The last version covers the following use cases:

User profile

  • Sign up
  • Sign in
  • View profile info (username, DID)
  • Change password
  • Logout
  • Reset password

Verifiable Credentials

  • Issue credentials
  • Store credentials in Affinidi Wallet
  • View credentials (list + details)
  • Share credentials via QR code
  • Verify credentials
  • Delete credentials

Gallery

Screenshots

Demo GIF

Technical details

App architecture

Android stack

  • Attempts to learn clean architecture approach. Presentation / data / domain layers each in a separate module.
  • Single activity and Navigation component (with SafeArgs) to navigate across fragments.
  • Kotlin coroutines for asynchronous operations.
  • Hilt for dependency injection.
  • View binding is used to interact with views within fragments and recyclerview adapters.
  • ViewBindingPropertyDelegate lib to make work with view binding simplier (avoid boilerplate and safe calls)
  • Retrofit for making API requests (plus OkHttp Logging Interceptor).
  • Room for credentials caching.
  • Timber for logging.
  • CircleImageView for rounded images, Coil to load SVG images into ImageView.
  • ksprefs wrapper for SharedPreferences.
  • PermissionX lib for handling permissions.
  • Unit tests (junit4)
  • Kotlin for Gradle build scripts (build.gradle.kts)

Used APIs

In this application the Affinidi APIs are used to create Affinidi user account and interact with the wallet.

Also DiceBear Avatars API is used to generate unique avatars depending on the user's DID.