Skip to content

SunnyBe/ListDetail

Repository files navigation

ListDetail

A simple list-detail android application

Kotlin Version AGP Gradle

A simple List-Detail sample project that presents a modern, 2020 approach to Android application development with up to date tech-stack.

The goal of the project is to demonstrate best practices by using up to date tech-stack and presenting modern Android application Architecture that is monolithic, scalable, maintainable, and testable.

This project is being maintained to match current industry standards. Please check CONTRIBUTING page if you want to help.

Project characteristics

This project brings to table set of best practices, tools, and solutions:

  • 100% Kotlin
  • Modern architecture (Model-View-ViewModel, Model-View-Intent)
  • Android Jetpack
  • Reactive UI
  • Testing (Unit, UI)
  • Material design

Tech-stack

Min API level is set to 21, so the presented approach is suitable for over 85% of devices running Android. This project takes advantage of many popular libraries and tools of the Android ecosystem. Most of the libraries are in the stable version unless there is a good reason to use non-stable dependency.

Design decisions

Read related articles to have a better understanding of underlying design decisions and various trade-offs.

What this project does not cover?

The interface of the app utilizes some of the modern material design components, however, is deliberately kept simple to focus on application architecture.

Getting started

There are a few ways to open this project.

Android Studio

  1. Android Studio -> File -> New -> From Version control -> Git
  2. Enter https://github.com/SunnyBe/ListDetail.git into URL field
  3. Provide APP_ID="<value goes here>" in the gradle.properties

Command-line + Android Studio

  1. Run git clone https://github.com/SunnyBe/ListDetail.git to clone project
  2. Go to Android Studio -> File -> Open and select cloned directory
  3. Provide APP_ID="<value goes here>" in the gradle.properties

Inspiration

This is project is a sample, to inspire you and should handle most of the common cases, but please take a look at additional resources.

Known issues

  • ktlint import-ordering rule conflicts with IDE default formatting rule, so it have to be disabled
  • False positive "Unused symbol" for a custom Android application class referenced in AndroidManifest.xml file (Issue)
  • False positive "Function can be private" (Issue)
  • Unit tests are running in IDE but fail after running gradle task because of missing Agrs class (Issue)

Contribute

Want to contribute? Check our Contributing docs.

Author

Follow me

Follow me

License

MIT License

Copyright (c) 2020 Sunday Ndu

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  TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

About

A simple list-detail android application

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages