Skip to content

Aditprayogo/GithubUsers

Repository files navigation

GithubUsers

Platform Kotlin Gradle Aditprayogo

Note

I'm currently an External Code reviewer for Dicoding Indonesia, if you are proven to be plagiarizing from this project then I am not responsible for anything that happens if you get plagiarized / suspended by Dicoding.

Table of Content

Apps Feature

  • Search User On Github
  • Reminder At 9:00 AM
  • Add Favorite User
  • Delete Favorite User
  • User Favorite
  • Localization
  • Content Provider this branch

Clean Architecture

Clean architecture is a software design philosophy that separates the elements of a design into ring levels. An important goal of clean architecture is to provide developers with a way to organize code in such a way that it encapsulates the business logic but keeps it separate from the delivery mechanism.

Layers

  • Domain - Contains the business logic of the application. It is the individual and innermost module. It’s a complete java module.
  • Data It includes the domain layer. It would implement the interface exposed by domain layer and dispenses data to app
  • Presentation - A layer that interacts with the UI, mainly Android Stuff like Activities, Fragments, ViewModel, etc. It would include both domain and data layers.

Demo

Mad Scoreboard

Built With

  • Kotlin - First class and official programming language for Android development.

  • Coroutines - Is light wight threads for asynchronous programming

  • Flow Handle the stream of data asynchronously that executes sequentially.

  • Android Architecture Components - Collection of libraries that help you design robust, testable, and maintainable apps.

    • LiveData - Data objects that notify views when the underlying database changes.
    • ViewModel - Stores UI-related data that isn't destroyed on UI changes.
    • ViewBinding - Generates a binding class for each XML layout file present in that module and allows you to more easily write code that interacts with views.
    • Room - SQLite object mapping library.
  • Dependency Injection dependency injection is a technique whereby one object (or static method) supplies the dependencies of another object. A dependency is an object that can be used (a service).

    • Hilt-android Hilt provides a standard way to incorporate Dagger dependency injection into an Android application.
    • Dagger2 Dagger is a fully static, compile-time dependency injection framework for both Java and Android (If you want to see this project using dagger, you can go to this branch)
  • Retrofit - A type-safe HTTP client for Android and Java.

  • ShimmerAndroid library that provides an easy way to add a shimmer effect to any view in your Android app

  • OkHttp An HTTP & HTTP/2 client for Android and Java applications.

  • Gson A Java serialization/deserialization library to convert Java Objects into JSON and back

  • Glide An image loading and caching library for Android focused on smooth scrolling

  • Lottie-Android JSON-based animation file format that enables designers to ship animations on any platform as easily as shipping static assets.

  • Material Design Material is a design system created by Google to help teams build high-quality digital experiences for Android, iOS, Flutter, and the web.

  • Encryption with SQLCipher

  • Dynamic Feature Module

  • Obfuscation with Proguard

  • Certificate Pinning with OkHttp

  • Continuous Integration with Circle-CI

How to support me ?

Just Follow my Github and star this repo

GitHub followers

License


   Copyright © 2020 Aditiya Ihzar Eka Prayogo

   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.