WeatherSimple

Features 🎨

  • 100% Kotlin-only project.
  • Coroutine, Jetpack compose, Hilt, Flow, Paging 3, AndroidX,MVVM, JUnit tests, MockWebServer.
  • Jacoco Plugin to check test coverage
  • 100% Gradle Kotlin DSL setup.
  • Dependency versions managed via buildSrc.
  • CI Setup with GitHub Actions.
  • Kotlin Static Analysis via ktlint and detekt.
  • Issues project (bug report + feature request)

Gradle Setup 🐘

This project is using Gradle Kotlin DSL as well as the Plugin DSL to setup the build.

Dependencies are centralized inside the buildSrc folder. This provides convenient auto-completion when writing your gradle files.

Static Analysis 🔍

This project is using ktlint to format your code. To reformat all the source code as well as the buildscript you can run

# Run lint and display issues
./gradlew ktlintCheck

To fix the issues, run:

# Run lint and try to fix issues automatically (not all issues are fixable this way)
./gradlew ktlintFormat

This project is also using detekt to analyze the source code, with the configuration that is stored in the detekt.yml file (the file has been generated with the detektGenerateConfig task).

# Run Detekt static code analysis validation
./gradlew detekt

If we ever need to re-generate our baseline for detekt run:

# Re-generate the baseline for Detekt
./gradlew detektBaseline

Test Coverage 🔍

This project is using Jacoco to check test coverage. To generate the test coverage report you can run

# Generate test coverage report
./gradlew jacocoTestDebugUnitTestReport

CI ⚙️

There are currently the following workflows available:

How To Build

Pull the code on this branch, import into Android Studio, from there you can run it like a standard android project project or run ./gradlew assembleDebug. Further notes can be found here https://developer.android.com/studio/build/building-cmdline#DebugMode

Screenshots

Screenshot 1 Screenshot 2