/kotlin-modular-tdd-coroutines-mvvm

A sample Kotlin app which was built with modular structure, Kotlin DSL, Kotlin Coroutines, TDD and MVVM pattern.

Primary LanguageKotlin

Kotlin Application Relies On TDD - Coroutines and Modularization

CircleCI License

TVmaze is a community of TV lovers and dedicated contributors that discuss and help maintain tv information on the web.

License

A TvMaze Client App which was built with modular structure, Kotlin DSL, Kotlin Coroutines, DataBinding, Test Driven Development and MVVM pattern.

Users are able to search tv series by query.

Networking was handled by Coroutines and Retrofit. It is very simple with the Coroutines support of Retrofit

The dependency management is managed by buildSrc module.

Material Components were used for UI.

Detekt and Ktlint plugins were used for static code analysis.

The repository is tracked by the CI tool CircleCI

Screenshots

Search screen List screen Error screen

In Progress

Kotlin DSL doesn't support to write common scripts among all child gradle files at the moment. When it is supported, it will be implemented in the repository.

Architecture

Patterns

Approaches

Technology Stack

Layers

  • Data(This layer is responsible to hold models)
  • Domain(Retrieves data from data layer and dispatches to view layer. No connection with Android framework.)
  • Base(Contains common stuff for other layers)
  • View(Responsible for UI stuff such as displaying data)

To-Do List:

  • - A detail screen to be added
  • - Cards to have more detail
  • - Some screenshots to be added
  • - Write common DSL scripts
MIT License

Copyright (c) 2019 Nuh Koca

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.