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.