Skip to content
/ closetalk.app Public template

App Template | Android, Kotlin, Jetpack Compose, Jetpack Navigation, feature modules, MVI, Koin, Coil, Proto DataStore, GitHub Actions

License

Notifications You must be signed in to change notification settings

mobiledevpro/closetalk.app

Repository files navigation

Android Chat App entirely built with Jetpack Compose (in development)

Run Unit Tests CodeFactor Quality Gate Status

Kotlin Version Compose Bom Gradle API Target SDK License Android Studio

GitHub last commit

Try demo:

Demo

closetalk_github_social_preview

Youtube

Apps built from this template:

Tech. stack

Notes

Plugin to generate Compose Compiler metrics (root/build.gradle.kts) Interpreting Compose Compiler Metrics

subprojects {
    tasks.withType<org.jetbrains.kotlin.gradle.tasks.KotlinCompile>().all {
        kotlinOptions.freeCompilerArgs += listOf(
            "-P",
            "plugin:androidx.compose.compiler.plugins.kotlin:reportsDestination=" +
                    project.buildDir.absolutePath + "/compose_metrics"
        )
        kotlinOptions.freeCompilerArgs += listOf(
            "-P",
            "plugin:androidx.compose.compiler.plugins.kotlin:metricsDestination=" +
                    project.buildDir.absolutePath + "/compose_metrics"
        )
    }
}

UI testing with Maestro:

  • Install Maestro: run in terminal curl -Ls "https://get.maestro.mobile.dev" | bash
  • Install the app on emulator (doesn't work with physical device)
  • Run the flow: run in terminal maestro test -c maestro/people-profile-flow.yaml
  • Sample config

Module Graph

%%{
  init: {
    'theme': 'base',
    'themeVariables': {"primaryTextColor":"#fff","primaryColor":"#5a4f7c","primaryBorderColor":"#5a4f7c","lineColor":"#f5a623","tertiaryColor":"#40375c","fontSize":"12px"}
  }
}%%

graph LR
  subgraph :core
    :core:navigation["navigation"]
    :core:ui["ui"]
    :core:di["di"]
    :core:domain["domain"]
    :core:coroutines["coroutines"]
    :core:util["util"]
    :core:analytics["analytics"]
  end
  subgraph :feature
    :feature:home["home"]
    :feature:onboarding["onboarding"]
    :feature:subscription["subscription"]
    :feature:chat_list["chat_list"]
    :feature:people["people"]
    :feature:user_profile["user_profile"]
  end
  :core:navigation --> :core:ui
  :core:navigation --> :core:di
  :core:navigation --> :core:domain
  :core:navigation --> :feature:home
  :core:navigation --> :feature:onboarding
  :core:navigation --> :feature:subscription
  :core:navigation --> :feature:chat_list
  :core:navigation --> :feature:people
  :core:navigation --> :feature:user_profile
  :app --> :core:navigation
  :feature:home --> :core:ui
  :feature:home --> :core:di
  :feature:home --> :core:domain
  :feature:home --> :core:coroutines
  :feature:home --> :core:util
  :feature:home --> :core:analytics

classDef focus fill:#FA8140,stroke:#fff,stroke-width:2px,color:#fff;
class :core:navigation focus
class :feature:home focus
Loading

How to create the module graph

 ./gradlew createModuleGraph

Author:

Dmitri Chernysh

Youtube Instagram Linkedin Upwork

License:

Copyright 2023 Dmitri Chernysh

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Thanks for the support

Stargazers

Stargazers repo roster for @mobiledevpro/closetalk.app

Forkers

Forkers repo roster for @mobiledevpro/closetalk.app