Giter VIP home page Giter VIP logo

kotlin-mvvm-covid19's Introduction

Android kotlin-mvvm-covid19

This repository contains simple COVID19 data monitoring with android stack MVVM, Live Data, Koin, RxJava, RxBinding, Offline first with simple caching, etc

alt text

Available on Playstore ๐ŸŽ‰

Update

Since Google restrict app distribution about covid-19 on Google Play Store, we will upload latest feature apk here

Library References

  1. RxJava2
  2. Koin
  3. Retrofit
  4. RxBinding
  5. Hawk
  6. MPAndroidChart
  7. Dexter
  8. SlidingUp Panel
  9. Spek2 Framework
  10. Android ViewBinding
  11. Kiel

License

   Copyright (C) 2020

   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.

Contributing

Just make pull request. You are in!

kotlin-mvvm-covid19's People

Contributors

fajarnuha avatar fgaim avatar georgcantor avatar isfaaghyth avatar rizmaulana avatar suryamudti avatar umarauna 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  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

kotlin-mvvm-covid19's Issues

Location Detail BottomSheet

right now when we click a point location in a map, it only shows locationName, it is not so informative

instead, we can show a second bottomsheet showing the detail information about the location, reuse partial_country_info will do, might also add Pin to Dashboard button to make it easier for user to reach

abstraction for scalability purpose

interface Repository {
   fun getData()
}

class DataRepository: Repository {
   override fun getData() { /* ... */ }
}

DataModule.kt

@Singleton
@Provides
fun provideDataRepository(): Repository = DataRepository()

dimana pun, cukup deklarasikan dan pake repositorynya seperti ini:

MainViewModel.kt

@Inject lateinit var repository: Repository

App distribution

its still disappointing our apps is suspended because of Google doesn't want any covid related app in playstore
lets figure out the best way the other can take benefit from this app

@rizmaulana said he has an idea to distribute in Firebase app distribution
lets discuss

Error Build

compile error says the manifest is not found. any solution?

Markers Icon is not accurate

as our icon is circle, and default behaviour of maps marker's icon is on top of coordinate point, this causes misinterpreted data and unsynchronized behaviour with pulse animation

figuring out how to put the exact center of icon on the coordinate point will fix this issue

Impelement Indonesia details API

we will provide information about Indonesia data from this api https://indonesia-covid-19-api.now.sh/api. there are basically 2 options here:

  1. Transform the API and combine it with existing API
  2. Create another Country Detail Page that has more information about the country, in case of Indonesia, we can make it special by fetching data from the API and provides more insight, this can be the continuation from issue #18

I think as the data has a lot of differences with the existing API, option 2 is more viable with more effort

Can't build - no firebase package name found

So I wanted to go ahead and build this for myself, entered my own Google Maps API key, but then it still doesn't want to build.

Error message:

* What went wrong:
Execution failed for task ':app:processDevDebugGoogleServices'.
> No matching client found for package name 'id.rizmaulana.covid19.dev'

Should we setup our own firebase project for this as well?

Thanks for your work!

How to use the responseToResult method

@rizmaulana Hello, if need to display a prompt when there is no network connection or the request times out, how can I use responseToResult to make all network requests display prompt information under these circumstances?

fun <T> Observable<T>.responseToResult(): Observable<Result<T>> {
    return map { it.asResult() }
        .onErrorReturn {
            when (it) {
                is HttpException,
                is SocketTimeoutException,
                is UnknownHostException -> {
                    it.asErrorResult()
                }
                else -> throw it
            }
        }
}

dynamic graph for total and delta data

I want to implement showing graph for both total and delta data
as is: only shows delta data
to be: with tab layout, dynamically show both total and delta data

Thanks to contributors ๐ŸŽ‰

Hello guys,
I am really glad that this repository can help people to get information about covid19 with ease. Beside it this repository also can be good getting started for who those want to learn about android development. 224 stars and 81 forks so far.
For now our government already have official data that published on their website, it makes people can access reliable data from it. Related to this, I think this repository will not have any new feature that will be released.
With this issue I would like to say thank you to all contributors, especially for mas @pandubaraja mas @fajarnuha and mas @isfaaghyth it is a pleasure to work with you.

Thank you ๐Ÿ™๐ŸŽ‰

Swipe To Refresh, Loading State, & ConnectionError State

Currently, user have no way to refresh the dashboard, this become problematic if it is the first time the user open the app and have a bad internet connection, it only show blank screen because it does not have cached data and the only way to refresh it minimize/close the app and open it again.

So it will be nice if we have loading state, connection error state, and swipe-to-refresh too.

I will create PR for this tonight ๐Ÿ™

cant show maps

in feature data in maps . the maps cant show data covid19 .
WhatsApp Image 2020-03-18 at 09 37 58

Rx without subscribeOn and observeOn

As I see from our project, I barely see subscribeOn and observeOn in api call, how is this possible? even in DetailViewMode, it calls api with .subscribeOn(schedulerProvider.ui()) ๐Ÿ˜ฒ

but the weird part is everything is working just fine, what am I missing here?
@rizmaulana

Showing a lot of - in full stats

When implementing full stats, I didn't know that each cases api actually returns every cases available, thus I implement API case merging (full stats), this has consequence some data having - number

VisualMaps Design Issue

Now map fragment needs to be initialized every time data changed from DetailViewModel, this causes problem such as

  1. clutter issue, caused by 2x changing data causing double map fragment initialization
  2. flexibility on handling changing data

I propose map fragment also observe DetailViewModel and DetailActivity just need to initialize the map fragment once

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.