🎉 This app demonstrates how to consume a list of remote contacts.
- Allow user to login with id and token
- Allow loginned user to show a list of contacts
- Allow loginned user to show contact details
This project use Git
as a source controle, and mimic a Git flow
with branches strategy for each feature.
Contacts app define an architecture that allows the app to scale, increases the app's robustness.
Seperation of concern is the core design for contacts archiecture, that applied within three layers
Presenation Layer Contains only ui logic and operating system interactions.
Domain Layer Contains business rules and fetching data sources.
Entity Layer Contains app data classes.
This app follows Uncle-Bob Clean Architecture , Android-Docs Architecure Guide for project architecure and MVVM as UI architecture
-
Language Java,Kotlin
-
Navigation Allow user to navigate between app's destinations
-
Material Design Apply material design guide on app ui
-
Coil To load prefered images to user
-
View Binding Allow interact with XML layout via generated binding class
-
Retrofit As http client to connect via web services
-
OkHttp To manage http request headers
-
ViewModel To store and manage ui related data
-
Dagger-Hilt Provides a standard way to apply dependecy injection
-
RxJava As multi-threading approach for composing asynchronous
-
Koltin Coroutine As light weigh threading technique
-
Koltin Flow To recieve live updates of data
The app ui get inspired by OnePageCRM.
This feature allow to user to login via ID
and API TOKEN
, which you can get from OnePageCRM API. The credentials
data store to properties
file, as a more secure access layer between sensitive keys and public access.
This feature display a list of contacts consumed from OnePageCRM Contacts, with enabling expanded option with each item.
This feature display an extra details data for each contact.
Splash | Login | Login + Error | Contacts |
---|---|---|---|
Expanded Contacts | Contact Details | Connection Error |
---|---|---|