/TracePinas

(UNMAINTAINED) A COVID-19 statistics and news tracker app based on MVVM, Repository, and Clean Architecture. Implemented with Pagination, RxJava, Dagger2, LiveData, Retrofit2, Room, Data Binding, Twitter, News.org, and various COVID19 related open APIs.

Primary LanguageJavaApache License 2.0Apache-2.0

COVID19 Tracker App 📱

This COVID19 Tracker app is a mobile version of a virus tracker inspired by various tracking web apps out there. This app has a bunch of features such as data breakdown visualization of each country using charts and graphs from day 1 up to present. Maps to provide seamless hover to different affected countries, news, and tweets from local media providers to give updates anywhere in the world.

https://github.com/forceporquillo/TracePinas/blob/master/screenshots/preview_screenshot.jpg

Summary 📋

This app showcase the app Architecture and its dependencies.

This app uses:

  • MVVM architecture pattern to separate and organized module dependencies to make development clean, easy to maintain and update.
  • Android Databinding with LiveData to manage UI lifecycle changes.
  • Asynchronous communications implemented with ReactiveX.
  • Converts Rx flowable observable to LiveData using LiveDataReactiveStreams.
  • store data using Room database.
  • charts from https://github.com/PhilJay/MPAndroidChart and https://github.com/razerdp/AnimatedPieView to graph data statistically.
  • Dagger2 to inject instance dependencies.
  • implemented with Facebook shimmers, SmartTabLayouts, Pagination.
  • OkHttpInterceptor (chain calls) for Oauth2 bearer token authentication in Twitter API.
  • Google Maps SDK, Twitter API and various COVID-19 related API's .
  • LeakCanary for detecting memory leaks.

Prerequisites 📍⚠️

This project requires a newer version of Android Studio such as

// Read the API key from demo/secure.properties into R.string.maps_api_key  
def secureProps = new Properties()  
if (file("secure.properties").exists()) {  
    file("secure.properties")?.withInputStream { secureProps.load(it) }  
}  
resValue "string", "maps_api_key", (secureProps.getProperty("MAPS_API_KEY") ?: "")  

// To add your Maps API key to this project:  
// 1. Create a file demo/secure.properties  
// 2. Add this line, where YOUR_API_KEY is your API key: MAPS_API_KEY=YOUR_API_KEY

Features 🚀 🔥

  • Android Architecture Components - Lifecycle aware achieved by using a combination of RxJava, LiveData, ViewModels and Room.

  • MVVM Architecture - Using the lifecycle aware ViewModels, the view observes changes in the model / repository.

  • Offline First Architecture - All the data is first tried to be loaded from the local database and then updated from the server. This ensures that the app is usable even in an offline mode.

  • Adaptive UI Design - Adaps to different screen sizes and densities of device.

  • Repository Pattern - Abstracts the data store and enables business logic to define read and write operations on a logical level.

  • Modular - The app is broken into modules of features and libraries which can be combined to build instant-apps, complete apps or lite version of apps.

  • Intelligent Sync - Intelligent hybrid syncing logic makes sure this app does not make repeated calls to the same back-end API for the same data in a particular time period.

  • Reactive Networking - This observes network configuration, and systematically adapts to any network condition and network configuration without requiring manual reconfiguration. This notifies the UI Thread.

Dependencies/Libraries 📚🛠

Data Sources - REST API 📊

COVID-19 Data Repository by the Center for Systems Science and Engineering (CSSE) at Johns Hopkins University - https://github.com/CSSEGISandData/COVID-19

COVID API NOVEL - https://corona.lmao.ninja/

NEWS ORG - https://newsapi.org/

Twitter-API - https://developer.twitter.com/en/docs

DiseaseSh- https://corona.lmao.ninja/

COVID19 API- https://covid19api.com/

European Centre for Disease Prevention and Control (ECDC) - https://www.ecdc.europa.eu/en

PH DATASETS/DOH

Contributing 🧑🏻‍🔧📲

I love contributions! There is a lot to do in this app so why not chat or email me about what you're interested in doing? Or you can directly submit a pull request and I'd to love merged it.

If you find some issues about this app you can submit a issue here.

Author 👨🏻‍💻🇵🇭

Force Porquillo FEU Institute of Technology
https://github.com/forceporquillo/android-covid19-tracker/blob/master/screenshots/gmail_icon.png|width=5px https://github.com/forceporquillo/android-covid19-tracker/blob/master/screenshots/github_icon.png|width=5px https://github.com/forceporquillo/android-covid19-tracker/blob/master/screenshots/twitter_icon.png|width=5px

Find this project useful ? ❤️🔥💯

  • Support it by clicking the ⭐ or ☕🙏

Coffee

License

Copyright 2020 Force Porquillo

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.