β°
WallUp Wallpaper finder and downloader app Demonstrate the Jetpack Compose UI using Unsplash API Made with
π¨
UI Design Thanks to Rian Hamidjoyo for Wallpaper App UI Design
πΌ
Screens Home Screen | Detail Screen |
---|---|
Bookmark Screen | Collection Screen |
---|---|
Prerequisites
-
API Key
To run the application, an API key from Unsplash should be supplied.
inside local.properties file add this line and Rebuild project. apiKey="Your API Key Here"
How to store API key? - Stackoverflow
π§°
Architecture - Single Activity No Fragment
- MVVM Pattern
View: Renders UI and delegates user actions to ViewModel
ViewModel: Can have simple UI logic but most of the time just gets the data from UseCase.
UseCase: Contains all business rules and they written in the manner of single responsibility principle.
Repository: Single source of data. Responsible to get data from one or more data sources.
For more information you can check Guide to app architecture
π
Libraries - Kotlin - First class and official programming language for Android development.
- Ktor Client - Ktor includes a multiplatform asynchronous HTTP client, which allows you to make requests and handle responses, extend its functionality with plugins (formerly known as features), such as authentication, JSON serialization, and so on. In this topic, we'll take an overview of the client - from setting it up to making requests and installing plugins.
- Jetpack Compose - Jetpack Compose is Androidβs modern toolkit for building native UI.
- Coroutines - For asynchronous and more..
- Android Architecture Components - Collection of libraries that help you design robust, testable, and maintainable apps.
- Compose Destinations - A KSP library that processes annotations and generates code that uses Official Jetpack Compose Navigation under the hood. It hides from you the non-type-safe and boilerplate code you would otherwise have to write.
- Material Components for Android
- Modular and customizable Material Design UI components for Android.
- Dagger - Hilt - Dependency Injection Framework
- Coil - Image loader library.
π
Package Structure .
.
.
βββ di # Hilt Dependency Injection
βββ feature_bookmark
βββ feature_collection
βββ feature_detail
βββ feature_home
βββ feature_splash
| βββ data # DTOs and repositories implementation
| |
| βββ domain # Models, repositories and use cases
| |
| βββ presentation # UI Components
βββ ui
| βββ theme # Compose Theme
| |
| βββ animation # Animation Utils
|
βββ utils # Useful classes
|
βββ WallUpApp.kt # @HiltAndroidApp
π€
Contribute If you want to contribute to this app, you're always welcome!
π
License Copyright 2022 Enes-Kayiklik
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.