Giter Club home page Giter Club logo

simple-mvvm's Introduction

Simple MVVM

A simple Android MVVM pattern example and template.

Developer Buy Me A Coffee

Screenshots

Used Components/Libraries

Others

  • Splash Screen (Introduced in Android 12)
  • Custom Build variant (https://developer.android.com/studio/build/build-variants)
  • Environment variable based on Build variant
  • Custom Snackbar
  • Dark Mode
  • Awesome module naming example (see AwesomeModuleConstants)
  • Dynamic accent color from image (see calculatePaletteInImage())
  • Simple Encryption Utils (see EncryptionUtils)
  • Data pass and receive example between Activities
    • Pass data on Activity start (startActivity())
    • Start Activity for result (registerForActivityResult())
  • Data pass and receive example between Fragments
    • Pass data between child Fragment using parent ViewModel
    • Pass data between child Fragment using FragmentResultListener
    • Pass data on Fragment transaction
  • Simple Todo app (for beginner)
    • Single Activity approach
    • Used Go REST API (Just Todo API)
    • Offline support
  • Simple CMS app
    • Single Activity approach
    • Used Go REST API
    • Sections: User, Post, Todo and Comment
    • Navigation Component
    • Hilt
    • Material 3
  • Service example
    • Foreground service
    • Data-pass using Broadcast
  • GitHub Actions
  • Send test push notification to self using OneSignal

Extension Functions (see utils/extensions)

  • DateTime
  • Dialog
  • Dimension
  • Flow
  • General Spinner
  • Miscellaneous: show/hide keyboard, download file, open permission settings, open url, send mail etc.
  • Retrofit
  • Snackbar
  • String
  • Toast

Common Binding Adapters

  • RecyclerView
  • Spinner
  • ImageView
  • TextView (for Date() to formatted date-time)

Utilities

  • SharedPref
  • AlarmUtils
  • LocationProviderUtilClient
  • Event Class: Get notified for identical values in LiveData, Channel, Flow etc.
  • ignoreCrash { }: Ignore exceptions for a block.

Todo

  • UI/Unit Testing
  • Example of LocationProviderUtilClient
  • Migrate full app to Material 3

Note

  • For dependency version check I am currently using Gradle Versions Plugin. I added this in the Gradle init script and can check versions using the following commend.
./gradlew dependencyUpdates
  • The project using spotless with klint. Apply spotless using the following command.
./gradlew spotlessApply

Setup

Go REST API Key

Open the local.properties in your project level directory, and then add the following code. Replace YOUR_API_KEY with your Go REST API key.

API_KEY=YOUR_API_KEY

My Other Projects

  • Oops! No Internet! - A simple no Internet dialog and snackbar, which will automatically appear and disappear based on Internet connectivity status.
  • Why Not! Image Carousel! - An easy, super simple and customizable image carousel view for Android.
  • Why Not Compose! - A collection of animations, compositions, UIs using Jetpack Compose. You can say Jetpack Compose cookbook or play-ground if you want!
  • Why Not SwiftUI! - A collection of Swift, SwiftUI and iOS goodies.

Licence

Copyright 2023 Md. Mahmudul Hasan Shohag

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.

simple-mvvm's People

Contributors

imaginativeshohag 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

Watchers

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