Skip to content

Commit 68b9692

Browse files
committed
simplify app structure
simplify app structure
1 parent 686fa71 commit 68b9692

File tree

406 files changed

+2179
-2433
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

406 files changed

+2179
-2433
lines changed
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
distributionBase=GRADLE_USER_HOME
22
distributionPath=wrapper/dists
3-
distributionUrl=https\://services.gradle.org/distributions/gradle-8.9-bin.zip
3+
distributionUrl=https\://services.gradle.org/distributions/gradle-8.13-bin.zip
44
zipStoreBase=GRADLE_USER_HOME
55
zipStorePath=wrapper/dists

processor/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
apply from: "${project.rootDir}/gradle/kotlin/processor.gradle"
22

33
group = 'com.kotlitecture.kotli'
4-
version = '0.13.0'
4+
version = '0.14.0'

processor/src/main/kotlin/kotli/template/multiplatform/compose/MultiplatformComposeTemplateProcessor.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ import kotli.template.multiplatform.compose.dataflow.encryption.EncryptionProvid
2020
import kotli.template.multiplatform.compose.dataflow.expression.ExpressionProvider
2121
import kotli.template.multiplatform.compose.dataflow.http.HttpProvider
2222
import kotli.template.multiplatform.compose.dataflow.settings.SettingsProvider
23-
import kotli.template.multiplatform.compose.dataflow.settings.basic.BasicSettingsProcessor
23+
import kotli.template.multiplatform.compose.dataflow.settings.multiplatform.MultiplatformSettingsProcessor
2424
import kotli.template.multiplatform.compose.dataflow.paging.PagingProvider
2525
import kotli.template.multiplatform.compose.essentials.buildtool.BuildToolProvider
2626
import kotli.template.multiplatform.compose.essentials.design.DesignSystemProvider
@@ -58,7 +58,7 @@ object MultiplatformComposeTemplateProcessor : BaseTemplateProcessor() {
5858
features = listOf(
5959
Feature(IOSPlatformProcessor.ID),
6060
Feature(AndroidPlatformProcessor.ID),
61-
Feature(BasicSettingsProcessor.ID),
61+
Feature(MultiplatformSettingsProcessor.ID),
6262
Feature(DataLoaderProcessor.ID),
6363
Feature(SaveThemeProcessor.ID),
6464
Feature(ChangeThemeProcessor.ID),
@@ -152,7 +152,7 @@ object MultiplatformComposeTemplateProcessor : BaseTemplateProcessor() {
152152
)
153153
)
154154
state.onApplyRules(
155-
Rules.SettingsGradle,
155+
Rules.RootSettingsGradle,
156156
ReplaceMarkedText(
157157
text = "template",
158158
marker = "rootProject.name",
@@ -181,7 +181,7 @@ object MultiplatformComposeTemplateProcessor : BaseTemplateProcessor() {
181181
)
182182
)
183183
state.onApplyRules(
184-
Rules.AppIconsKt,
184+
Rules.PresentationIconsKt,
185185
ReplaceMarkedText(
186186
text = "import template.",
187187
marker = "import template.",

processor/src/main/kotlin/kotli/template/multiplatform/compose/Rules.kt

Lines changed: 48 additions & 86 deletions
Original file line numberDiff line numberDiff line change
@@ -2,131 +2,93 @@ package kotli.template.multiplatform.compose
22

33
object Rules {
44

5-
// resources
5+
// common
6+
const val BuildGradle = "*build.gradle.kts"
67
const val StringsXml = "*/strings.xml"
78
const val IndexHtml = "*/index.html"
89
const val IosConfig = "*/Config.xcconfig"
9-
10+
const val AndroidSrcDir = "*/src/androidMain"
11+
const val JvmSrcDir = "*/src/jvmMain"
12+
const val JsSrcDir = "*/src/jsMain"
13+
const val IosSrcDir = "*/src/ios*"
1014
const val IosAppDir = "iosApp"
11-
const val BackendDir = "backend"
12-
const val SrcAndroidMainDir = "*/src/androidMain"
13-
const val SrcIosMainDir = "*/src/ios*"
14-
const val SrcJsMainDir = "*/src/jsMain"
15-
const val SrcJvmMainDir = "*/src/jvmMain"
16-
const val SharedDataDir = "shared/data"
17-
const val SharedDomainDir = "shared/domain"
18-
const val SharedDesignDir = "shared/design"
1915

20-
// gradle
21-
const val BuildGradle = "*build.gradle.kts"
22-
const val SettingsGradle = "settings.gradle.kts"
23-
const val BuildGradleRoot = "build.gradle.kts"
24-
const val BuildGradleBackend = "${BackendDir}/build.gradle.kts"
25-
const val BuildGradleSharedData = "${SharedDataDir}/build.gradle.kts"
26-
const val BuildGradleSharedDesign = "${SharedDesignDir}/build.gradle.kts"
27-
const val BuildGradleSharedDomain = "${SharedDomainDir}/build.gradle.kts"
16+
// root
17+
const val RootSettingsGradle = "settings.gradle.kts"
18+
const val RootBuildGradle = "build.gradle.kts"
2819

2920
// app
3021
const val App = "app"
3122
const val AppSrc = "${App}/src"
3223
const val AppBuildGradle = "${App}/build.gradle.kts"
3324
const val AppCommonMain = "${AppSrc}/commonMain"
3425
const val AppCommonMainRoot = "${AppCommonMain}/kotlin/kotli/app"
26+
const val AppKt = "${AppCommonMainRoot}/app/App.kt"
27+
const val AppConfigKt = "${AppCommonMainRoot}/app/AppConfig.kt"
28+
const val AppViewModelKt = "${AppCommonMainRoot}/app/AppViewModel.kt"
3529
const val AppCommon = "${AppCommonMainRoot}/common"
36-
const val AppFeature = "${AppCommonMainRoot}/feature"
37-
const val AppKt = "${AppCommonMainRoot}/App.kt"
38-
const val AppConfigKt = "${AppCommonMainRoot}/AppConfig.kt"
39-
const val AppViewModelKt = "${AppCommonMainRoot}/AppViewModel.kt"
4030
const val AppCommonPresentation = "${AppCommon}/presentation"
4131
const val AppCommonConfigKt = "${AppCommon}/CommonConfig.kt"
42-
const val AppConfigureKoinKt = "*/configureKoin.kt"
43-
44-
// app -> di
45-
const val AppDI = "${AppCommonMainRoot}/di"
46-
const val AppDiKt = "${AppDI}/DI.kt"
47-
48-
// app -> misc
4932
const val AppProguardRulesPro = "${App}/assemble/proguard-rules.pro"
5033
const val AppWebPackConfigDir = "app/webpack.config.d"
5134
const val AppSqlDelightConfigJs = "${AppWebPackConfigDir}/sqljs-config.js"
52-
53-
// app -> common -> presentation -> loader
35+
const val AppPlatformConfigKt = "*/PlatformConfig.*.kt"
5436
const val AppCommonLoader = "${AppCommonPresentation}/loader"
55-
56-
// app -> common -> presentation -> navigation
5737
const val AppCommonNavigation = "${AppCommonPresentation}/navigation"
58-
59-
// app -> feature -> passcode
60-
const val AppPasscode = "${AppFeature}/passcode"
61-
const val AppDIPasscodeModuleKt = "${AppDI}/feature/PasscodeModule.kt"
62-
63-
// app -> feature -> theme
64-
const val AppTheme = "${AppFeature}/theme"
38+
const val AppCommonDatabase = "${AppCommon}/data/source/database"
39+
const val AppPasscode = "${AppCommonMainRoot}/passcode"
40+
const val AppTheme = "${AppCommonMainRoot}/theme"
6541
const val AppThemeConfigKt = "${AppTheme}/ThemeConfig.kt"
66-
const val AppDIThemeModuleKt = "${AppDI}/feature/ThemeModule.kt"
67-
68-
// app -> feature -> navigation
69-
const val AppNavigation = "${AppFeature}/navigation"
42+
const val AppNavigation = "${AppCommonMainRoot}/navigation"
7043
const val AppNavigationProvider = "${AppNavigation}/provide/presentation/NavigationProvider.kt"
7144
const val AppBottomNavigationProvider = "${AppNavigation}/provide/presentation/BottomNavigationProvider.kt"
7245
const val AppNavigationViewModel = "${AppNavigation}/provide/presentation/NavigationViewModel.kt"
73-
74-
// app -> feature -> showcases
75-
const val AppShowcases = "${AppFeature}/showcases"
46+
const val AppShowcases = "${AppCommonMainRoot}/showcases"
7647
const val AppShowcasesDataflow = "${AppShowcases}/presentation/dataflow"
7748
const val AppShowcasesUserflow = "${AppShowcases}/presentation/userflow"
7849
const val AppShowcasesViewModelKt = "${AppShowcases}/presentation/ShowcasesViewModel.kt"
7950
const val AppShowcasesConfigKt = "${AppShowcases}/ShowcasesConfig.kt"
8051

81-
// design
82-
const val SharedDesignSrcDir = "${SharedDesignDir}/src"
83-
const val SharedDesignComponentDir = "${SharedDesignSrcDir}/commonMain/kotlin/shared/design/component"
84-
const val AppIconsKt = "${SharedDesignSrcDir}/commonMain/kotlin/shared/design/icon/AppIcons.kt"
85-
const val AppPlaceholder = "${SharedDesignComponentDir}/AppPlaceholder.kt"
86-
const val AppMarkdown = "${SharedDesignComponentDir}/AppMarkdown.kt"
87-
const val AppFilePicker = "${SharedDesignComponentDir}/AppFilePicker.kt"
88-
const val AppIcon = "${SharedDesignComponentDir}/AppIcon.kt"
52+
// backend
53+
const val BackendDir = "backend"
54+
const val BackendBuildGradle = "${BackendDir}/build.gradle.kts"
55+
const val BackendSrc = "${BackendDir}/src"
56+
57+
// domain
58+
const val DomainDir = "shared/domain"
59+
const val DomainBuildGradle = "${DomainDir}/build.gradle.kts"
8960

90-
// dataflow -> analytics
61+
// data
62+
const val DataDir = "shared/data"
63+
const val DataDataSourceDir = "${DataDir}/src/commonMain/kotlin/shared/data/source"
64+
const val DataBuildGradle = "${DataDir}/build.gradle.kts"
9165
const val AnalyticsSource = "*/*AnalyticsSource*.kt"
92-
93-
// dataflow -> cache
9466
const val CacheSource = "*/*CacheSource*.kt"
95-
const val CacheSourceDir = "${SharedDataDir}/src/commonMain/kotlin/shared/data/source/cache"
96-
97-
// dataflow -> database
67+
const val CacheSourceDir = "${DataDataSourceDir}/cache"
9868
const val SqlDelightSource = "*/*SqlDelightSource*.kt"
9969
const val SqlDelightDir = "*/sqldelight/*"
10070
const val RoomSource = "*/*RoomSource*.kt"
10171
const val RoomDir = "*/database/room/*"
102-
103-
// dataflow -> config
104-
const val ConfigSource = "*/*ConfigSource*.kt"
105-
const val AppConfigSource = "${AppCommon}/data/source/config/AppConfigSource.kt"
106-
107-
// dataflow -> paging
72+
const val ConfigSource = "*/*ConfigSource.kt"
10873
const val PagingSource = "*/*Paging*.kt"
109-
110-
// dataflow -> http
111-
const val HttpSource = "*/*HttpSource*.kt"
112-
113-
// dataflow -> settings
114-
const val SettingsSource = "*/*SettingsSource*.kt"
115-
const val BasicSettingsSource = "*/*BasicSettingsSource*.kt"
116-
const val DataStoreSource = "*/*DataStoreSource.kt"
117-
118-
// dataflow -> encryption
74+
const val PagingSourceDir = "${DataDataSourceDir}/paging"
75+
const val HttpSource = "*/*HttpSource.kt"
76+
const val SettingsSource = "*/*SettingsSource.kt"
77+
const val DataStoreSource = "*/DataStoreSource.kt"
78+
const val MultiplatformSettingsSource = "*/MultiplatformSettingsSource.kt"
11979
const val EncryptionSource = "*/*EncryptionSource*.kt"
120-
const val EncryptionDir = "${SharedDataDir}/src/commonMain/kotlin/shared/data/source/encryption"
121-
122-
// dataflow -> expression
80+
const val EncryptionDir = "${DataDir}/src/commonMain/kotlin/shared/data/source/encryption"
12381
const val ExpressionSource = "*/*ExpressionEvaluator*.kt"
124-
125-
// dataflow -> AiSource
12682
const val AiSource = "*/*AiSource*.kt"
12783

128-
// backend
129-
const val Backend = "backend"
130-
const val BackendSrc = "${Backend}/src"
131-
84+
// presentation
85+
const val PresentationDir = "shared/presentation"
86+
const val PresentationBuildGradle = "${PresentationDir}/build.gradle.kts"
87+
const val PresentationUiDir = "${PresentationDir}/src/commonMain/kotlin/shared/presentation/ui"
88+
const val PresentationIconsKt = "${PresentationUiDir}/icon/AppIcons.kt"
89+
const val PresentationComponentDir = "${PresentationUiDir}/component"
90+
const val PresentationComponentPlaceholder = "${PresentationComponentDir}/AppPlaceholder.kt"
91+
const val PresentationComponentFilePicker = "${PresentationComponentDir}/AppFilePicker.kt"
92+
const val PresentationComponentMarkdown = "${PresentationComponentDir}/AppMarkdown.kt"
93+
const val PresentationComponentIcon = "${PresentationComponentDir}/AppIcon.kt"
13294
}

processor/src/main/kotlin/kotli/template/multiplatform/compose/common/CommonStatelyCollectionsProcessor.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,14 +19,14 @@ object CommonStatelyCollectionsProcessor : BaseFeatureProcessor() {
1919

2020
override fun doApply(state: TemplateState) {
2121
state.onApplyRules(
22-
Rules.BuildGradleSharedData,
22+
Rules.DataBuildGradle,
2323
CleanupMarkedLine("{common.stately-collections}")
2424
)
2525
}
2626

2727
override fun doRemove(state: TemplateState) {
2828
state.onApplyRules(
29-
Rules.BuildGradleSharedData,
29+
Rules.DataBuildGradle,
3030
RemoveMarkedLine("{common.stately-collections}")
3131
)
3232
state.onApplyRules(

processor/src/main/kotlin/kotli/template/multiplatform/compose/dataflow/ai/gemini/GeminiProcessor.kt

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,9 @@ object GeminiProcessor : BaseFeatureProcessor() {
1919
override fun getId(): String = ID
2020
override fun getTags(): List<FeatureTag> = Tags.AllClients
2121
override fun getWebUrl(state: TemplateState): String = "https://github.com/PatilShreyas/generative-ai-kmp"
22-
override fun getIntegrationUrl(state: TemplateState): String = "https://github.com/PatilShreyas/generative-ai-kmp?tab=readme-ov-file#installation-and-usage"
22+
override fun getIntegrationUrl(state: TemplateState): String =
23+
"https://github.com/PatilShreyas/generative-ai-kmp?tab=readme-ov-file#installation-and-usage"
24+
2325
override fun getIntegrationEstimate(state: TemplateState): Long = 1.hours.inWholeMilliseconds
2426

2527
override fun dependencies(): List<Class<out FeatureProcessor>> = listOf(
@@ -32,7 +34,7 @@ object GeminiProcessor : BaseFeatureProcessor() {
3234
RemoveFile()
3335
)
3436
state.onApplyRules(
35-
Rules.AppBuildGradle,
37+
Rules.DataBuildGradle,
3638
RemoveMarkedLine("generativeai")
3739
)
3840
state.onApplyRules(
@@ -41,8 +43,8 @@ object GeminiProcessor : BaseFeatureProcessor() {
4143
)
4244
)
4345
state.onApplyRules(
44-
Rules.AppDiKt,
45-
RemoveMarkedLine("aiSource")
46+
Rules.AppCommonConfigKt,
47+
RemoveMarkedLine("ai")
4648
)
4749
}
4850

processor/src/main/kotlin/kotli/template/multiplatform/compose/dataflow/analytics/AnalyticsProvider.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,14 @@ package kotli.template.multiplatform.compose.dataflow.analytics
22

33
import kotli.engine.FeatureProcessor
44
import kotli.template.multiplatform.compose.dataflow.BaseDataFlowProvider
5-
import kotli.template.multiplatform.compose.dataflow.analytics.facade.FacadeAnalyticsProcessor
5+
import kotli.template.multiplatform.compose.dataflow.analytics.basic.BasicAnalyticsProcessor
66

77
object AnalyticsProvider : BaseDataFlowProvider() {
88

99
override fun getId(): String = "dataflow.analytics"
1010
override fun isMultiple(): Boolean = true
1111
override fun createProcessors(): List<FeatureProcessor> = listOf(
12-
FacadeAnalyticsProcessor
12+
BasicAnalyticsProcessor
1313
)
1414

1515
}

processor/src/main/kotlin/kotli/template/multiplatform/compose/dataflow/analytics/facade/FacadeAnalyticsProcessor.kt renamed to processor/src/main/kotlin/kotli/template/multiplatform/compose/dataflow/analytics/basic/BasicAnalyticsProcessor.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package kotli.template.multiplatform.compose.dataflow.analytics.facade
1+
package kotli.template.multiplatform.compose.dataflow.analytics.basic
22

33
import kotli.engine.BaseFeatureProcessor
44
import kotli.engine.FeatureTag
@@ -9,9 +9,9 @@ import kotli.template.multiplatform.compose.Rules
99
import kotli.template.multiplatform.compose.Tags
1010
import kotlin.time.Duration.Companion.minutes
1111

12-
object FacadeAnalyticsProcessor : BaseFeatureProcessor() {
12+
object BasicAnalyticsProcessor : BaseFeatureProcessor() {
1313

14-
const val ID = "dataflow.analytics.facade"
14+
const val ID = "dataflow.analytics.basic"
1515

1616
override fun getId(): String = ID
1717
override fun getTags(): List<FeatureTag> = Tags.AllClients
@@ -23,7 +23,7 @@ object FacadeAnalyticsProcessor : BaseFeatureProcessor() {
2323
RemoveFile()
2424
)
2525
state.onApplyRules(
26-
Rules.AppDiKt,
26+
Rules.AppCommonConfigKt,
2727
RemoveMarkedLine("AnalyticsSource")
2828
)
2929
}

processor/src/main/kotlin/kotli/template/multiplatform/compose/dataflow/cache/basic/BasicCacheProcessor.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ object BasicCacheProcessor : BaseFeatureProcessor() {
2727

2828
override fun doApply(state: TemplateState) {
2929
state.onApplyRules(
30-
Rules.BuildGradleSharedData,
30+
Rules.DataBuildGradle,
3131
CleanupMarkedLine("{dataflow.cache.basic}")
3232
)
3333
}
@@ -42,11 +42,11 @@ object BasicCacheProcessor : BaseFeatureProcessor() {
4242
RemoveFile()
4343
)
4444
state.onApplyRules(
45-
Rules.AppDiKt,
45+
Rules.AppCommonConfigKt,
4646
RemoveMarkedLine("CacheSource")
4747
)
4848
state.onApplyRules(
49-
Rules.BuildGradleSharedData,
49+
Rules.DataBuildGradle,
5050
RemoveMarkedLine("{dataflow.cache.basic}")
5151
)
5252
}

processor/src/main/kotlin/kotli/template/multiplatform/compose/dataflow/common/CommonDataFlowProcessor.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,11 @@ object CommonDataFlowProcessor : BaseFeatureProcessor() {
1616

1717
override fun doRemove(state: TemplateState) {
1818
state.onApplyRules(
19-
Rules.SharedDataDir,
19+
Rules.DataDir,
2020
RemoveFile()
2121
)
2222
state.onApplyRules(
23-
Rules.SettingsGradle,
23+
Rules.RootSettingsGradle,
2424
RemoveMarkedLine("shared:data")
2525
)
2626
state.onApplyRules(

0 commit comments

Comments
 (0)