This is an android app which consumes the REST API defined in Code Database which was done with django-rest-framework.
- Kotlin multiplatform data layer
- Jetpack Compose and Material 3 design
- Model View Intent(MVI) architecture followed
- Token Authentication for user login/logout
I know it's a lot. Let me explain one by one...
The backend data layer is done completely as a Kotlin Multiplatform(KMP) library and integrated with the android app. The iOS app is not configured yet, but can be done with minimal setup.
Features:
- Network calls with Ktor client
- Followed clean architecture and manual dependency injection done using service locator pattern
- Response serialization done with Kotlinx serialization
- Local in-memory cache maintained for swift search and filter functionalities
The application's UI is done using Jetpack Compose using compose-navigation and following the Material 3 design guidelines inspired by .
In-app screenshot of list view and search
- The app uses the Model View Intent architecture by declaring the UIStates in screen's view model
- The screen only reacts to the changes happening in the UIStates which enforces unidirectional data flow
- Any operations from the screen are posted as Events to view model which processes the event and updates the UI state if required
- The app's architecture follows the common guidelines recommended by android documentation
- User login/logout functionalities are also implemented in the app
- A token generation API was written in the web app using Django rest framework authtoken and a token is generated on every user login
- Every calls in app will pass that token as a Authorization header to get that user specific response
- On logout the token will be removed. The refresh and revoke access token is yet to be implemented.