Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -39,3 +39,6 @@
.cxx
/buildSrc/build/
/buildSrc/.gradle/
**/build/**

/ui/interactor/build/
35 changes: 0 additions & 35 deletions android.gradle

This file was deleted.

81 changes: 49 additions & 32 deletions app/app.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,42 +1,40 @@
import plugins.PluginConstants

plugins {
id("com.android.application")
id("kotlin-android")
id("kotlin-kapt")
kotlin("android")
}

apply {
from("${rootProject.projectDir}/lint.gradle")
id(Plugins.KSP)
id(Plugins.ANDROID)
id(Plugins.COMPOSE)
}

android {

compileSdk = 31
buildToolsVersion = "30.0.3"

defaultConfig {
minSdk = 24
targetSdk = 31
applicationId = "com.wednesday.template"
versionCode = 10
versionName = "1.0"
testInstrumentationRunner = "android.support.test.runner.AndroidJUnitRunner"
}
// compileSdk = Versions.SDK.compile
// buildToolsVersion = Versions.SDK.buildTools
//
// defaultConfig {
// minSdk = Versions.SDK.min
// targetSdk = Versions.SDK.target
// applicationId = "com.wednesday.template"
// versionCode = Versions.SDK.versionCode
// versionName = Versions.SDK.versionName
// testInstrumentationRunner = "android.support.test.runner.AndroidJUnitRunner"
// }

flavorDimensions += "version"
productFlavors {
create("qa") {
dimension = "version"
getByName(PluginConstants.QA) {
dimension = PluginConstants.FLAVOR
applicationIdSuffix = ".qa"
versionNameSuffix = "-qa"
}
create("prod") {
dimension = "version"
getByName(PluginConstants.PRODUCTION) {
dimension = PluginConstants.FLAVOR
applicationIdSuffix = ".prod"
versionNameSuffix = "-prod"
}
create("dev") {
dimension = "version"
getByName(PluginConstants.DEV) {
dimension = PluginConstants.FLAVOR
applicationIdSuffix = ".dev"
versionNameSuffix = "-dev"
}
Expand Down Expand Up @@ -70,14 +68,33 @@ android {
}

dependencies {
implementation(project(":presentation"))
// implementation(project(":navigation"))
implementation(project(":presentation-di"))
implementation(project(":navigation-di"))
implementation(project(":interactor-di"))
implementation(project(":domain-di"))
implementation(project(":repo-di"))
implementation(project(":service-di"))
implementation(project(Modules.service))
implementation(project(Modules.serviceImpl))
implementation(project(Modules.serviceDI))
implementation(project(Modules.serviceEntity))
implementation(project(Modules.repo))
implementation(project(Modules.repoImpl))
implementation(project(Modules.repoDI))
implementation(project(Modules.domain))
implementation(project(Modules.domainImpl))
implementation(project(Modules.domainDI))
implementation(project(Modules.domainEntity))


implementation(project(Modules.home))
implementation(project(Modules.interactor))
implementation(project(Modules.interactorDI))
implementation(project(Modules.interactorImpl))
implementation(project(Modules.presentationEntity))
implementation(project(Modules.designSystem))
implementation(project(Modules.search))

implementation(project(Modules.navigation))

implementation(project(Modules.resources))

implementation(project(Modules.Core.ui))
implementation(project(Modules.Core.data))

implementation(Dependencies.Kotlin.stdLib)

Expand Down
3 changes: 2 additions & 1 deletion app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
package="com.wednesday.template">

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />

<application
android:name=".AndroidTemplateApplication"
Expand All @@ -13,7 +14,7 @@
android:supportsRtl="true"
android:theme="@style/Theme.App.Starting">
<activity
android:name=".presentation.MainActivity"
android:name=".MainActivity"
android:theme="@style/Theme.App.Starting"
android:exported="true">
<intent-filter>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
package com.wednesday.template

import android.app.Application
import com.wednesday.template.data.core.di.coreDataModule
import com.wednesday.template.domain.domainModule
import com.wednesday.template.home.di.homeModule
import com.wednesday.template.interactor.interactorModule
import com.wednesday.template.navigation.navigationModule
import com.wednesday.template.presentation.presentationModule
import com.wednesday.template.repo.repoModule
import com.wednesday.template.search.di.searchModule
import com.wednesday.template.service.serviceModule
import org.koin.android.ext.koin.androidContext
import org.koin.core.context.startKoin
Expand All @@ -23,12 +24,13 @@ class AndroidTemplateApplication : Application() {
startKoin {
androidContext(applicationContext)
modules(
coreDataModule,
serviceModule,
repoModule,
domainModule,
interactorModule,
navigationModule,
presentationModule
homeModule,
searchModule,
)
}
}
Expand Down
50 changes: 50 additions & 0 deletions app/src/main/java/com/wednesday/template/MainActivity.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
package com.wednesday.template

import android.os.Bundle
import androidx.activity.compose.setContent
import androidx.appcompat.app.AppCompatActivity
import androidx.compose.animation.ExperimentalAnimationApi
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.padding
import androidx.compose.material3.Scaffold
import androidx.compose.ui.Modifier
import androidx.core.splashscreen.SplashScreen.Companion.installSplashScreen
import com.google.accompanist.navigation.material.ExperimentalMaterialNavigationApi
import com.ramcosta.composedestinations.DestinationsNavHost
import com.ramcosta.composedestinations.animations.rememberAnimatedNavHostEngine
import com.wednesday.template.designSystem.theme.AppTheme
import com.wednesday.template.navigation.animations.getNavGraphAnimations
import com.wednesday.template.navigation.di.navigationDependencies
import com.wednesday.template.navigation.graph.mainNavGraph

class MainActivity : AppCompatActivity() {

@OptIn(ExperimentalMaterialNavigationApi::class, ExperimentalAnimationApi::class)
override fun onCreate(savedInstanceState: Bundle?) {
// Handle the splash screen transition.
installSplashScreen()

super.onCreate(savedInstanceState)

setContent {
AppTheme {
val engine = rememberAnimatedNavHostEngine(
rootDefaultAnimations = getNavGraphAnimations(),
)

Scaffold {
Box(Modifier.fillMaxSize().padding(it)) {
DestinationsNavHost(
navGraph = mainNavGraph,
engine = engine,
dependenciesContainerBuilder = {
navigationDependencies()
},
)
}
}
}
}
}
}
9 changes: 4 additions & 5 deletions build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,10 @@ buildscript {
}
}

plugins {
id(Plugins.KSP) version Versions.kspPlugin apply true
}

allprojects {
repositories {
google()
Expand All @@ -25,9 +29,4 @@ allprojects {
jvmTarget = "11"
}
}

// TODO: Remove once ExperimentalCoroutinesApi: runTest is stable
tasks.withType<org.jetbrains.kotlin.gradle.tasks.KotlinCompile>().configureEach {
kotlinOptions.freeCompilerArgs += "-opt-in=kotlin.RequiresOptIn"
}
}
22 changes: 22 additions & 0 deletions buildSrc/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,7 +1,29 @@
plugins {
`kotlin-dsl`
`java-gradle-plugin`
}

gradlePlugin {
plugins {
register("compose") {
id = "compose"
implementationClass = "plugins.ComposePlugin"
}

register("android") {
id = "android"
implementationClass = "plugins.AndroidPlugin"
}
}
}

repositories {
google()
mavenCentral()
gradlePluginPortal()
}

dependencies {
implementation("com.android.tools.build:gradle:7.4.2")
implementation(kotlin("gradle-plugin", "1.8.20"))
}
47 changes: 30 additions & 17 deletions buildSrc/src/main/kotlin/Dependencies.kt
Original file line number Diff line number Diff line change
@@ -1,20 +1,23 @@
object Dependencies {

object Compose {
const val composeBOM = "androidx.compose:compose-bom:${Versions.composeBOM}"
const val activity = "androidx.activity:activity-compose:${Versions.activityCompose}"
const val material = "androidx.compose.material:material:${Versions.compose}"
const val materialIconCore =
"androidx.compose.material:material-icons-core:${Versions.compose}"
const val materialIconExtended =
"androidx.compose.material:material-icons-extended:${Versions.compose}"
const val foundation = "androidx.compose.foundation:foundation:${Versions.compose}"
const val runtime = "androidx.compose.runtime:runtime:${Versions.compose}"
const val liveData = "androidx.compose.runtime:runtime-livedata:${Versions.compose}"
const val animation = "androidx.compose.animation:animation:${Versions.compose}"
const val uiTooling = "androidx.compose.ui:ui-tooling:${Versions.compose}"
const val material = "androidx.compose.material3:material3"
const val foundation = "androidx.compose.foundation:foundation"
const val runtime = "androidx.compose.runtime:runtime"
const val animation = "androidx.compose.animation:animation"
const val uiTooling = "androidx.compose.ui:ui-tooling"
const val viewModel =
"androidx.lifecycle:lifecycle-viewmodel-compose:${Versions.lifecycleViewModelCompose}"
const val uiTest = "androidx.compose.ui:ui-test-junit4:${Versions.compose}"
const val uiTest = "androidx.compose.ui:ui-test-junit4"
const val uiToolingPreview = "androidx.compose.ui:ui-tooling-preview"
const val composeDestinations =
"io.github.raamcosta.compose-destinations:animations-core:${Versions.composeDestinations}"
const val composeDestinationsKsp =
"io.github.raamcosta.compose-destinations:ksp:${Versions.composeDestinations}"
const val lifecycleRuntime =
"androidx.lifecycle:lifecycle-runtime-compose:${Versions.lifecycleRuntimeCompose}"
}

object Room {
Expand All @@ -28,7 +31,10 @@ object Dependencies {
const val serialization =
"org.jetbrains.kotlinx:kotlinx-serialization-json:${Versions.kotlinxSerialization}"
const val gradlePlugin = "org.jetbrains.kotlin:kotlin-gradle-plugin:${Versions.kotlin}"
const val serializationPlugin = "org.jetbrains.kotlin:kotlin-serialization:${Versions.kotlin}"
const val serializationPlugin =
"org.jetbrains.kotlin:kotlin-serialization:${Versions.kotlin}"
const val immutableCollection =
"org.jetbrains.kotlinx:kotlinx-collections-immutable:${Versions.immutableCollection}"
}

object Coroutines {
Expand All @@ -40,15 +46,18 @@ object Dependencies {

object Koin {
const val core = "io.insert-koin:koin-core:${Versions.koin}"
const val coreCoroutines = "io.insert-koin:koin-core-coroutines:${Versions.koin}"
const val android = "io.insert-koin:koin-android:${Versions.koin}"
const val workManager = "io.insert-koin:koin-androidx-workmanager:${Versions.koin}"
const val test = "io.insert-koin:koin-test:${Versions.koin}"
const val navigation = "io.insert-koin:koin-androidx-navigation:${Versions.koin}"
const val compose = "io.insert-koin:koin-androidx-compose:${Versions.koin}"
const val composeNavigation =
"io.insert-koin:koin-androidx-compose-navigation:${Versions.koin}"
}

object Material {
const val material = "com.google.android.material:material:${Versions.material}"
const val material = "androidx.compose.material3:material3:${Versions.material}"
}

object Google {
Expand All @@ -74,14 +83,13 @@ object Dependencies {
"androidx.lifecycle:lifecycle-livedata-ktx:${Versions.lifecycle}"
const val lifecycleViewModelKtx =
"androidx.lifecycle:lifecycle-viewmodel-ktx:${Versions.lifecycle}"
const val lifecycleViewModel =
"androidx.lifecycle:lifecycle-viewmodel:${Versions.lifecycle}"
const val lifecycleRuntimeKtx =
"androidx.lifecycle:lifecycle-runtime-ktx:${Versions.lifecycle}"
const val navigationFragment =
"androidx.navigation:navigation-fragment-ktx:${Versions.nav}"
const val navigationUi = "androidx.navigation:navigation-ui-ktx:${Versions.nav}"
const val navigationSafeArgsPlugin = "androidx.navigation:navigation-safe-args-gradle-plugin:${Versions.nav}"
const val navigationSafeArgsPlugin =
"androidx.navigation:navigation-safe-args-gradle-plugin:${Versions.nav}"
const val splashScreen = "androidx.core:core-splashscreen:${Versions.splash}"
}

Expand All @@ -99,7 +107,12 @@ object Dependencies {
}

object Image {
const val coil = "io.coil-kt:coil:${Versions.coil}"
const val coil = "io.coil-kt:coil-compose:${Versions.coil}"
}

object Accompanist {
const val placeholder =
"com.google.accompanist:accompanist-placeholder-material:${Versions.accompanist}"
}

object Test {
Expand Down
Loading