๐ This app demonstrates how to consume a list of remote contacts.
- Allow user to log in with id and token
- Allow logged users to show a list of contacts
- Allow logged users to show contact details
This project use Git
as a source control, and mimic a Git flow
with branches strategy for each feature.
The contacts app defines an architecture that allows the app to scale and increases the app's robustness.
Seperation of concern is the core design for contacts architecture, 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 architecture and MVVM as UI architecture
-
Language Java,Kotlin
-
Navigation Allow user to navigate between the app's destinations
-
Material Design Apply the material design guide on app UI
-
Coil To load preferred images to the user
-
View Binding Allow interaction 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 dependency injection
-
RxJava As a multi-threading approach for composing asynchronous
-
Koltin Coroutine As light weigh threading technique
-
Koltin Flow To receive live updates on data
The app ui gets inspired by OnePageCRM.
This feature allows to users to log in via ID
and API TOKEN
, which you can get from OnePageCRM API. The credentials
data is stored in the properties
file, as a more secure access layer between sensitive keys and public access.
This feature displays a list of contacts consumed from OnePageCRM Contacts, enabling expanded option with each item.
This feature displays extra details data for each contact.
Splash | Login | Login + Error | Contacts |
---|---|---|---|
![]() |
![]() |
![]() |
![]() |
Expanded Contacts | Contact Details | Connection Error |
---|---|---|
![]() |
![]() |
![]() |