Skip to content

Enes-Kayiklik/Wall-Up

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

24 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

GitHub Cards Preview

WallUp 🏞️

Wallpaper finder and downloader app Demonstrate the Jetpack Compose UI using Unsplash API Made with ❀️ by Enes

Get it on Google Play

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.
    • Flows - Data objects that notify views when the underlying database changes.
    • ViewModel - Stores UI-related data that isn't destroyed on UI changes.
    • Room - Database Library
  • 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.

Releases

No releases published

Packages

No packages published

Languages