- Kotlin - Most widely used programming language for Android development.
- Coroutines - For asynchronous and more..
- Android Architecture Components - Collection of libraries that help you design robust, testable, and maintainable apps.
- LiveData - Data objects that notify views when the underlying database changes.
- ViewModel - Stores UI-related data that isn't destroyed on UI changes.
- ViewBinding - Generates a binding class for each XML layout file present in that
- Retrofit - A type-safe HTTP client for Android and Java.
- GSON - Gson is also widely used in Kotlin and Java development for JSON serialization and deserialization.
- GSON Converter - A Converter which uses Gson for serialization to and from JSON.
- OkHttp3 - For implementing interceptor, logging and mocking web server.
- Glide - An image loading and caching library for Android focused on smooth scrolling.
- Material Components for Android - Modular and customizable Material Design UI components for Android.
- Dependency injection - Dependency injection (DI) is a technique widely used in programming and well suited to Android development.
- Reusability of code
- Ease of refactoring
- Ease of testing
- RecyclerView
- CardView
- ImageSlider
- Fragments
- Passing data between activities, fragments
- SearchView
- SwipeRefresh
- Navigation ...
Onboarding | Sign in & Sign up |
---|---|
Home | Search |
Filter | Detail |
Wishlist | Cart |
|
├── app
| └── App
|
├── common
| └── Constants
|
├── data
| ├── api
| | ├── auth
| | | ├── dto
| | | | ├── AuthResponse
| | | | ├── SignInRequest
| | | | ├── SignUpRequest
| | | | └── UserDto
| | | └── AuthApi
| | |
| | └── product
| | ├── dto
| | | ├── Banner
| | | ├── Category
| | | ├── Detail
| | | ├── HomeResponse
| | | ├── Product
| | | ├── Section
| | | └── SectionType
| | |
| | ├── paging
| | | └── ProductPagingSource
| | └── ProductApi
| |
| ├── repo
| | ├── AuthRepositoryImpl
| | └── ProductRepositoryImpl
| |
| └── store
| ├── BaseStore
| ├── OnboardedStore
| ├── RecentsStore
| ├── TokenStore
| └── UserStore
|
├── di
| ├── ApiModule
| ├── DataModule
| ├── NetworkModule
| └── RepositoryModule
|
├── domain
| ├── model
| | ├── Destination
| | ├── ProductQuery
| | └── User
| └── repo
| ├── AuthRepository
| └── ProductRepository
|
├── presentation
| ├── categories
| | ├── CategoriesAdapter
| | ├── CategoriesFragment
| | └── CategoriesViewModel
| |
| ├── detail
| | ├── DetailFragment
| | ├── DetailViewModel
| | ├── ImageAdapter
| | └── RelatedAdapter
| |
| ├── filter
| | ├── FilterFragment
| | └── FilterViewModel
| |
| ├── home
| | ├── adapter
| | | ├── BannerAdapter
| | | ├── HomeCategoryAdapter
| | | ├── HorizontalAdapter
| | | ├── SectionAdapter
| | | └── VerticalAdapter
| | ├── HomeFragment
| | └── HomeViewModel
| |
| ├── main
| | ├── MainActivity
| | └── MainViewModel
| |
| ├── onboarding
| | ├── OnBoardingAdapter
| | ├── OnBoardingViewModel
| | └── OnboardingFragment
| |
| ├── orders
| | ├── OrdersFragment
| | ├── ..
| |
| ├── products
| | ├── ProductViewHolder
| | ├── ProductViewModel
| | ├── ProductsAdapter
| | └── ProductsFragment
| |
| ├── profile
| | ├── ProfileFragment
| | ├── ..
| |
| ├── search
| | ├── adapter
| | | ├── RecentAdapter
| | | ├── RecentAdapter
| | | └── SearchProductsAdapter
| | ├── SearchFragment
| | └── SearchViewModel
| |
| ├── sign_in
| | ├── SignInFragment
| | └── SignInViewModel
| |
| ├── sign_up
| | ├── SignUpFragment
| | └── SignUpViewModel
| └── wishlist
| ├── WishlistFragment
| └── WishlistViewModel
|
└── utils
├── BaseFragment
├── Functions
├── HorizontalMarginItemDecoration
└── SingleLiveEvent
This app uses MVVM (Model View View-Model) architecture.