Code Monkey home page Code Monkey logo

mvvm-starter's Introduction

mvvm-starter

Android Arsenal

A starter project for Android MVVM Project with DataBinding Library and RxJava 2

Archived

This repository will no longer be maintained. Further development will happen in Modular Starter using the latest and more scalable approach

How To Use

You can create new project using our project generator here MVVM Starter Generator - by using our generator you can save the hassle of renaming every package reference & changing folder structure manually. Just input your App & Package name and extract the downloaded file for your future development

--

Libraries used :

  • Retrofit com.squareup.retrofit2:retrofit:2.3.0
  • Glide com.github.bumptech.glide:glide:4.0.0-RC1
  • EasyPermission pub.devrel:easypermissions:0.4.3
  • Hawk com.orhanobut:hawk:2.0.1
  • Android Libraries ( appcompat, design support, data binding, etc )
  • Sosoito Loading Layout com.github.flipboxstudio:sosoito:v1.0.3
  • Data Binding Validator com.github.Ilhasoft:data-binding-validator:1.1.0
  • Rx Java 2 + Rx Android io.reactivex.rxjava2:rxandroid:2.0.1 & io.reactivex.rxjava2:rxjava:2.1.2

--

Setup included :

  • Data Binding
    • Using Android Data Binding Library
    • ViewModel is inside viewmodels package
  • Splash Screen
  • Authentication Flow
    • Using Retrofit & ResponseInterceptor for request & response handling
    • Dummy API using https://jsonplaceholder.typicode.com
    • AuthActivity as Fragments Container
    • LoginFragment as Login UI with data binding validation
    • ForgotPasswordFragment as Forgot Password UI
    • RetrofitErrorAdapter to handle retrofit throwable error
  • RecyclerView Sample
    • Sample recyclerview implementation using viewholder & databinding
    • Using User as dummy object representation
    • See RecyclerViewActivity for details
  • ViewPager Sample
    • Sample viewpager implementation using tablayout
    • See ViewPagerActivity for details
  • Android M permission handler using EasyPermissions
    • Handle permission for Android M and above
    • Sample implementation for CAMERA access permission
  • Reusable Style
    • All colors are available inside colors.xml
    • Styles are available inside styles.xml
    • Custom Fonts are using CustomTextView on utils package and custom attribute on attrs.xml
    • Vector Drawable assets
    • Roboto fonts included
  • Rx Java 2 Samples
    • Get data from API using Maybe
    • Find existing data from cache & get from API if not exists
    • Based on RxJava pattern described here
  • Utilities classes
    • Camera Utils : Get image from camera / gallery
    • Calendar Utils : Parse & display Calendar object into various format
  • Product Flavors
    • Flavor dimensions : using flavor dimensions enable app to combine multiple flavors ( currently using 1 dimension, env / environment )
    • Product Flavors : dev for development variables and prod for production environment variables

-- screenshots

ToDo

  • Documentation & Wiki
  • Analytics setup
  • RxJava 2 RetryWhen sample
  • Retrofit Error Handler & sample
  • JWT Library & Utils
  • Data validation
  • Basic Location detection
  • Simple Custom toolbar & menu
  • Android M permissions sample
  • Calendar utils
  • Camera utils
  • RecyclerView sample
  • ViewPager sample
  • Product Flavors
  • Any suggestion?

mvvm-starter's People

Contributors

aqidd 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  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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

mvvm-starter's Issues

Default username/password?

I apologise if it should have been apparent, but I can't find the username/password anywhere in the source code to get past the login screen. Do we need to implement authorisation, or is there dummy user info that we can use to see more of the app?

Unable to build project

Firstly it was showing error in data binding library that was sorted out by using 2.0.0 version. Next aapt2 error that was solved by using android.enableAapt2=false in gradle properties. I am unable to resolve Caused by: java.util.concurrent.ExecutionException: com.android.ide.common.process.ProcessException: Error while executing process C:\Users\admin\AppData\Local\Android\Sdk\build-tools\26.0.2\aapt.exe with arguments {package -f --no-crunch -I C:\Users\admin\AppData\Local\Android\Sdk\platforms\android-27\android.jar -M \?\E:\android example projects\mvvm-starter-master\mvvm-starter-master\app\build\intermediates\manifests\full\dev\debug\AndroidManifest.xml -S E:\android example projects\mvvm-starter-master\mvvm-starter-master\app\build\intermediates\res\merged\dev\debug -m -J \?\E:\android example projects\mvvm-starter-master\mvvm-starter-master\app\build\generated\source\r\dev\debug -F E:\android example projects\mvvm-starter-master\mvvm-starter-master\app\build\intermediates\res\dev\debug\resources-devDebug.ap_ --custom-package id.co.flipbox.mvvmstarter -0 apk --output-text-symbols \?\E:\android example projects\mvvm-starter-master\mvvm-starter-master\app\build\intermediates\symbols\dev\debug --no-version-vectors}

Dagger support

When you are going to update your repository with Dagger as dependency injector?

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.