Weather application example with Android Architecture components and Clean Architecture

Weather app that shows how to architect an android app in a clean architecture with kotlin
coroutines. It simply shows a list of weather forecast that is fetched from open
api : Open Weather Map

Technical

Libraries

Android Jetpack

  • ViewBinding A feature that allows
    you to more easily write code that interacts with views..

  • Navigation Navigation refers to the interactions
    that allow users to navigate across, into, and back out from the different pieces of content
    within your app.

  • LiveData Build data objects
    that notify views when the underlying database changes.

  • ViewModel Store UI-related
    data that isn’t destroyed on app rotations. Easily schedule asynchronous tasks for optimal
    execution.

Database

  • Room The Room persistence library
    provides an abstraction layer over SQLite to allow fluent database access while harnessing the
    full power of SQLite

HTTP

  • Retrofit2 Type-safe HTTP client for Android and Java by
    Square, Inc.

  • OkHttp An HTTP+HTTP/2 client for Android and Java
    applications.

Coroutines

  • Kotlin Coroutines Coroutines is a rich library for
    coroutines developed by JetBrains. It contains a number of high-level coroutine-enabled primitives
    that this guide covers, including launch, async and others.

DI

  • Koin A pragmatic lightweight dependency injection framework for Kotlin
    developers.

Unit Test

  • Mockk MockK is a library for mocking written in Kotlin.As a native library,
    it helps our teams to write clean and concise code on testing Kotlin applications instead of using
    incommodious wrappers of Mockito or PowerMock

  • Junit JUnit is a
    simple framework to write repeatable tests. It is an instance of the xUnit architecture for unit
    testing frameworks.

Checklist

  • Programming language: Kotlin
  • Design app ‘s architecture (MVVM – Clean Architecture)
  • Apply LiveData mechanism
  • UI should be looks like in attachment.
  • Write Unit Tests
  • Acceptance Tests
  • Exception handling
  • Caching handling
  • Secure Android app from:
    • Decompile APK
    • Rooted device
    • Data transmission via network
    • Encryption for sensitive information
  • Accessibility for Disability Supports:
    • Talkback: Use a screen reader. b. Scaling Text: Display size and font size: To change the size
    • items on your screen, adjust the display size or font size.
  • Entity relationship diagram for the database and solution diagrams for the components,
    infrastructure design if any.
  • Readme file includes:
    • Brief explanation for the software development principles,patterns & practices being applied
    • Brief explanation for the code folder structure and the key Java/Kotlin libraries and
      frameworks being used
    • All the required steps in order to get the application run on local computer
    • Checklist of items the candidate has done.

GitHub

View Github