In this application consisting of multiple screens, you can review popular and recently added photos and set the wallpaper for your phone's background on the detail screen. In the detail screen, you can view the high resolution image by swiping or zooming the relevant photo, you can download it to your phone if you want, and you can share the photo with your friends. On the Collections screen, you can review the photos in the collections created by users on the unsplash site and save the photo you like. If you don't want to be content with these, search and review the photo you want on the search screen. This repo is a version of the project in the WalliesHD repo, rewritten with Jetpack Compose.
- You must create a developer account at https://unsplash.com/developers
- You have to create your application and get the access key
- You have to add the access key in
local.properties
DEBUG_API_KEY=""
This project uses many of the popular libraries, plugins and tools of the android ecosystem.
- Clean Architecture - Clean architecture is a method of software development in which you should be able to identify what a program performs merely by looking at its source code.
- Compose Animations - Animations are essential in a modern mobile app in order to realize a smooth and understandable user experience.
- Hilt - Dependency Injection library.
- KSP - KSP (Kotlin Symbol Processing) is a Kotlin-first alternative to kapt. KSP analyzes Kotlin code directly, which is up to 2x faster.
- Ktor - Ktor includes a multiplatform asynchronous HTTP client, which allows you to make requests and handle responses, extend its functionality with plugins, such as authentication, JSON serialization, and more.
- Ktlint - This plugin creates convenient tasks in your Gradle project that run ktlint checks or do code auto format.
- OkHttp-Logging-Interceptor - Logs HTTP request and response data.
- Coroutines - Library Support for coroutines.
- Flow - A cold asynchronous data stream that sequentially emits values and completes normally or with an exception.
- StateFlow - StateFlow is a state-holder observable flow that emits the current and new state updates to its collectors.
- Android Architecture Components - Collection of libraries that help you design robust, testable, and maintainable apps.
- Material Design 3 - Build awesome beautiful UIs.
- Compose Navigation - The Navigation component provides support for Jetpack Compose applications. You can navigate between composables while taking advantage of the Navigation component's infrastructure and features.
- Pager - Swipe views let you navigate between sibling screens, such as tabs, with a horizontal finger gesture (swipe). This navigation pattern is also referred to as horizontal paging.
- Firebase Auth - Firebase Authentication provides backend services, easy-to-use SDKs, and ready-made UI libraries to authenticate users to your app. It supports authentication using passwords, phone numbers, popular federated identity providers like Google, Facebook and Twitter, and more.
- Firebase Firestore - Cloud Firestore is a flexible, scalable database for mobile, web, and server development from Firebase and Google Cloud.
- Datastore - Jetpack DataStore is a data storage solution that allows you to store key-value pairs or typed objects with protocol buffers. DataStore uses Kotlin coroutines and Flow to store data asynchronously, consistently, and transactionally.
- Paging 3 - The Paging library helps you load and display pages of data from a larger dataset from local storage or over network.
- Room - The room persistence library it is an abstraction layer over SQLite.
- Coil - Image loading for Android backed by Kotlin Coroutines.
- BalloonCompose - Modernized and sophisticated tooltips, fully customizable with an arrow and animations on Android.