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.