Skip to content

luccap11/OzonoApp

Repository files navigation

Ozono App

GitHub branch checks state GitHub issues GitHub pull requests GitHub closed pull requests GitHub milestones GitHub milestones GitHub Workflow Status

Good app display next 5 days weather conditions example: http://api.openweathermap.org/data/2.5/weather?q=London,uk&APPID=7d85604d75067f7a0da53ac8f70c5364

Cites API: https://community.algolia.com/places/api-clients.html

splash screen splash screen splash screen

Credits

Designed by Chiara Giorgiutti

Notes

I can improve the app:

  1. introducing dagger2 for DI
  2. Introducing RxJava
  3. memory management, performance tuning and profiling tools (LeakCanary, AndroidProfiler)

Build & run the app

From command line

Follow this instructions

From Android Studio

Follow this instructions

Tests

Unit Tests

./gradlew test command to run unit tests

Instrumented Tests

Set up

Before launching instrumented test you have to set up you test environment as described here: Google developers guide ./gradlew connectedAndroidTest command to run instrumented tests

Tech Stack

  • Kotlin (Coroutines, completion handler)
  • MVVM
  • Dependency Injection
  • Retrofit2 - as HTTP client
  • Moshi
  • Room - for persistence layer
  • Glide - for image loading.
  • LruCache - for caching data
  • LiveData - use LiveData to see UI update with data changes.
  • Espresso for instrumented tests
  • DataBinding

Application Architecture

  1. follow the rules from Architecture guidelines recommended by Google.
  2. use latest Android Components, like ViewModel and LiveData.
  3. use Kotlin Coroutines for async tasks.
  4. keep Activity only responsible for UI related code.
  5. ViewModel provides data required by the UI class.
  6. Repository Layer provides data to ViewModel classes. (single source of truth)
  7. unit tests for testing the main logic.