Ekar App which shows the vehicle detail by picking the vehicle from map and on board it.
This project is built on 100%
Compose UI and kotlin.
- Screenshots
- Download Apk
- Tech Stack
- Installation
- Architecture
- Architecture Diagram
- Project Tree
- Test Cases
Here is the link to download the apk Ekar App
Mutable state is used in this project instead of Flows.
Download:
$ git clone https://github.com/SyedAmmarSohail/EkarApp.git
Import Project by Android Studio Menu > File > Import Project.
Release:
This app is production ready, only need to add your keystore path, password and alias in build.gradle file located under the app folder.
To view the map add your Google map api key in local.properties like
GOOGLE_MAPS_API_KEY= **YOUR_GOOGLE_MAP_API_KEY**
AppModule:
Used layer-based clean architecture in which include data, domain and presentation layer.
-
Data layer - Manages application data eg. retrieve data from the network
-
Domain layer - Contains business logic with separate usecases
-
Presentation layer - Presents data to a screen and handle user interactions
BuildSrc:
Puts every dependencies in one place with respect to its classes, and use it by calling the dependency with its class.
.
├── EkarApp
├── app
├── ekar
├── data
├── di
├── EkarDataModule
├── intercepter
├── QueryInterceptor
├── mapper
├── EkarMapper.kt
├── remote
├── dto
├── VehicleDetail
├── EkarApi
├── repository
├── EkarRepositoryImp
├── domain
├── model
├── VehicleModel
├── repository
├── EkarRepository
├── usecase
├── VehicleDetailUsecase
├── presentation
├── component
├── ActionAppBar.kt
├── ComposeButton.kt
├── ComposeEditText.kt
├── ComposeHorizontalList.kt
├── ComposeTextWithBackground.kt
├── RichText.kt
├── map
├── MapScreen.kt
├── navigation
├── Route
├── onboard
├── OnBoardScreen.kt
├── theme
├── Color.kt
├── Dimensions.kt
├── FontSize.kt
├── Shape.kt
├── Theme.kt
├── Type.kt
├── vehicle_detail
├── VehicleDetailScreen.kt
├── EkarEvent.kt
├── EkarUiState
├── EkarViewModel
├── utils
├── NetworkUtil.kt
├── NetworkFormat.kt
├── Result.kt
├── UiEvent
├── UiText
├── CommonExt
├── EkarApp
├── MainActivity
├── buildSrc
├── AndroidX
├── Build
├── Compose
├── Coroutines
├── DaggerHilt
├── Google
├── Kotlin
├── Moshi
├── ProjectConfig
├── Retrofit
├── Testing
└── .gitignore
Unit Test:
- Repository Test - To run the unit tests for repository go to the EkarRepositoryImpTest class under the test/data folder and run the tests.
- ViewModel Test - To run the unit tests for viewModel go to the EkarViewModelTest class under the test/presentation folder and run the tests.
- UseCase Test - To run the unit tests for use cases go to the VehicleDetailUsecaseTest class under the test/domain folder and run the tests.
Syed Ammar Sohail - [email protected]