Giter Club home page Giter Club logo

wallies's Introduction

Wallies

Get it on Google Play

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.

๐Ÿ› ๏ธ Setup

  • 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=""

๐Ÿญ Tech Stacks

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.
  • 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.
  • Retrofit - Type-safe http client and supports coroutines out of the box.
  • 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 - Build awesome beautiful UIs.
  • Motion Layout - MotionLayout is a layout type that helps you manage motion and widget animation in your app.
  • Navigation - Android Jetpack's Navigation component helps you implement navigation, from simple button clicks to more complex patterns, such as app bars and the navigation drawer.
  • Viewpager - 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.
  • Pagination - 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.
  • Balloon - Modernized and sophisticated tooltips, fully customizable with an arrow and animations on Android.
  • PowerMenu - PowerMenu is a modernized and fully customizable popup menu, which can be displayed on top of layouts.

๐Ÿ“ธ Screenshots

Component 1

๐Ÿ“ Architecture

A well planned architecture is extremely important for an app to scale and all architectures have one common goal- to manage complexity of your app. This isn't something to be worried about in smaller apps however it may prove very useful when working on apps with longer development lifecycle and a bigger team.

Clean architecture was proposed by Robert C. Martin in 2012 in the Clean Code Blog and it follow the SOLID principle.

Clean Architecture

The circles represent different layers of your app. Note that:

  • The center circle is the most abstract, and the outer circle is the most concrete. This is called the Abstraction Principle. The Abstraction Principle specifies that inner circles should contain business logic, and outer circles should contain implementation details.

  • Another principle of Clean Architecture is the Dependency Inversion. This rule specifies that each circle can depend only on the nearest inward circle ie. low-level modules do not depend on high-level modules but the other way around.

Clean Architecture Diagram

โœ… Todos

  • Jetpack Compose Migration
  • Unit Tests
  • More Spesific Screens

wallies's People

Contributors

oguzsout avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.