GithubHelp home page GithubHelp logo

android-etalase-app's Introduction

Etalase app

Build Status codecov

Feature

  • local-storage dengan Room
  • menggunakan view-model dan live-data
  • Hit API di background process dengan work-manager
  • Mengimplementasikan kotlin-coroutines
  • arsitektur berbasis offline-first
  • format commit dengan git-karma
  • Use modular approach per-feature
  • Add use case / interactor
  • Add mapper / transformation prefer to this template I used to build

Nice to have:

  • mengimplementasikan navigation component dari jetpack
  • menggunakan dagger koin

Instruction

  • Buat sebuah aplikasi untuk menampilkan list of post
  • Dan membuat post baru yang bersumber dari API: https://jsonplaceholder.typicode.com/.
  • Aplikasi harus mengacu pada paradigma offline-first

Tech Stack

  • Git
  • CI / CD
  • Kotlin
    • with idiom style: Extension
    • Refactor (!!) marks with safety-call (?)
    • Custom set/getter
  • Kotlinx Serialization
    • Used to replace GSON
    • Kotlinx is reflection-less, support many data types
    • Easy to use for retrofit. E.g: @QueryMap, using NetworkExt#QueryParam.toQueryMap without building map (key, value) one by one
  • Coroutine
    • Couroutine adapter for retrofit to use Deferred return type
    • Combined with room to have a suspend function (this only available on latest room 2.1.0-beta01)
    • Mostly used for Retrofit and Room
    • Channel used for search query (send & consumeEach)
  • Data Binding
    • I'm trying to implement atomic design ( tag) combined with Data binding powerful features e.g: (custom_error.xml, custom_loading.xml)
    • I also creating a custom Databinding adapter, to customize *View related attributes e.g: setPriceTag, configuring recyclerview, and many more
    • Using ObservableField from Databinding to update and observe value changes without hassle
  • Room
    • Configuring sqlite never been this easy with room, no more cursor loader and manual sql statement to have a CRUD
    • FTS4 (Full-text search) used for searching local SQLite data
  • Koin
    • Easy injection on unit / ui test
    • injecting viewmodel and sharedViewModel (share same viewmodel along fragment)
  • MyPreferenceFactory
    • (with kotlin extension: operator function, prefs reader)
    • No more bloated shared preference set/getter e.g: prefs["key"] = "this-value"
  • Building Bundle with ease
    • (with kotlin extension: bundleOf( "key0" bundleTo "val", "key1" bundleTo 100 ))
  • Unit / Instrumentation test
    • ./gradlew test to check for the test or
    • ./gradlew clean build to build everything including check for the test
    • Use sharedTest directory for commonly used utils for both test & androidTest
  • Better gradle managament (buildSrc directory)
    • Kotlin-DSL used
    • easy search & navigation across dependency management
  • AndroidX stable Used
    • room, lifecycle, paging to get latest update and backward compatible
    • one of great feature exist Fragment#getViewLifeCycleOwner() so we don't have to manually configure to destroy the viewmodel
  • Android Studio 3.5 Beta1
    • Used to have latest feature from google io 19
    • most important was: Data binding compiler error now arrived, refactor on xml much easier and make sense, no more lags
    • Improved Gradle Sync performance by adjusting for deleted build cache
    • Improved performance and UX with the Layout Editor
    • Incremental annotation processing (kapt and databinding, faster build)
    • Using latest IntelliJ IDEA 2019.1 which is more powerful

Ref

android-etalase-app's People

Stargazers

 avatar

Watchers

 avatar  avatar  avatar

Forkers

dika-putra

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.