Weather application example with Android Architecture components and Clean Architecture

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