WallUp ⛰
Wallpaper finder and downloader app Demonstrate the Jetpack Compose UI
using Unsplash API Made with ❤️
by Enes
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.