From e37d0da32c91bbdceaadd45907afc90e0d453996 Mon Sep 17 00:00:00 2001 From: Alexandr Alexeenko Date: Tue, 25 Jul 2023 00:51:06 +0300 Subject: [PATCH] Update README.md --- README.md | 69 ++++++++++++++++++++++++------------------------------- 1 file changed, 30 insertions(+), 39 deletions(-) diff --git a/README.md b/README.md index 5918231..99a2db3 100644 --- a/README.md +++ b/README.md @@ -1,19 +1,18 @@ # AffinidiID -* [About the app](#about-the-app) - * [Description](#description) - * [Gallery](#gallery) -* [Technical details](#technical-details) - * [Android](#android) - * [Used APIs](#used-apis) - * [Schemas](#schemas) - + * [About the app](#about-the-app) + * [Description](#description) + * [Gallery](#gallery) + * [Technical details](#technical-details) + * [App architecture](#app-architecture) + * [Android stack](#android-stack) + * [Used APIs](#used-apis) ## 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](hhttps://academy.affinidi.com/an-in-depth-exploration-of-self-sovereign-identity-and-verifiable-credentials-1a3eb2296004) using Affinidi open APIs. The second objective was to practice with Clean Architecture. +**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](hhttps://academy.affinidi.com/an-in-depth-exploration-of-self-sovereign-identity-and-verifiable-credentials-1a3eb2296004) using Affinidi open APIs. The app was created to pactice with Clean Architecture. -Actually, it works as native android frontend close to Affinidi [wallet application](https://wallet.affinidi.com/) but with the possibility to issue a test credential. The last version covers the following use cases: +Actually, it's a native android client close to Affinidi [wallet application](https://wallet.affinidi.com/) but with the possibility to issue a test credential. The last version covers the following use cases: **User profile** - Sign up @@ -29,42 +28,36 @@ Actually, it works as native android frontend close to Affinidi [wallet applicat - View credentials (list + details) - Share credentials via QR code - Verify credentials -- Delete credentials from Affinidi Wallet - -"Edit username" feature was deleted due to API issue. The original name becomes lost immediately after OTP is sent (without confirmation). +- Delete credentials ### Gallery +Screenshots +

-#### Manage Affinidi profile -

- - - - -

+ + + + -#### Issue and store credentials -

- - - -

-#### Share and verify credentials +Demo GIF

- - - - +

## Technical details -### Android +### App architecture + +

+ +

+ +### Android stack -- Attempts to use clean architecture approach. Presentation / data / domain layers each in a separate module. -- Single activity approach and [Navigation component](https://developer.android.com/guide/navigation) (with SafeArgs) to navigate across fragments. +- Attempts to learn clean architecture approach. Presentation / data / domain layers each in a separate module. +- Single activity and [Navigation component](https://developer.android.com/guide/navigation) (with SafeArgs) to navigate across fragments. - Kotlin coroutines for asynchronous operations. - [Hilt](https://dagger.dev/hilt/) for dependency injection. - [View binding](https://developer.android.com/topic/libraries/view-binding) is used to interact with views within fragments and recyclerview adapters. @@ -73,14 +66,12 @@ Actually, it works as native android frontend close to Affinidi [wallet applicat - [Room](https://developer.android.com/jetpack/androidx/releases/room) for credentials caching. - [Timber](https://github.com/JakeWharton/timber) for logging. - [CircleImageView](https://github.com/hdodenhof/CircleImageView) for rounded images, [Coil](https://github.com/coil-kt/coil) to load SVG images into ImageView. +- [ksprefs](https://github.com/cioccarellia/ksprefs) wrapper for SharedPreferences. +- [PermissionX](https://github.com/guolindev/PermissionX) lib for handling permissions. - Unit tests (junit4) +- Kotlin for Gradle build scripts (build.gradle.kts) ### Used APIs In this application the [Affinidi APIs](https://build.affinidi.com/docs/api) are used to create Affinidi user account and interact with the wallet. Also [DiceBear Avatars API](https://avatars.dicebear.com/) is used to generate unique avatars depending on the user's DID. - -### Schemas -

- -