Setup structure#2131
Conversation
|
Thanks for your pull request! It looks like this may be your first contribution to a Google open source project. Before we can look at your pull request, you'll need to sign a Contributor License Agreement (CLA). View this failed invocation of the CLA check for more information. For the most up to date status, view the checks section at the bottom of the pull request. |
There was a problem hiding this comment.
Code Review
This pull request introduces a new set of modules for an IMDb-specific application, including the main application module (app-imbd) and various core and feature modules (i_core and i_feature). Feedback on these changes highlights several critical build and configuration issues: multiple build files contain invalid compileSdk configurations and should leverage the custom convention plugin, and direct loading of local.properties in the network module will fail on CI/CD without safety checks. Additionally, the app-imbd module is missing dependencies on the new modules, there is a package name mismatch between imdb and imbd, and several serialization plugin declarations should be migrated to the version catalog. Finally, minor improvements are suggested to update the parent theme to Material 3, make the app name user-friendly, and align the domain module's namespace for consistency.
Important
The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.
| plugins { | ||
| alias(libs.plugins.android.library) | ||
| } | ||
|
|
||
| android { | ||
| namespace = "com.smmousavi.i_core.common" | ||
| compileSdk { | ||
| version = release(36) | ||
| } | ||
|
|
||
| defaultConfig { | ||
| minSdk = 24 | ||
|
|
||
| testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" | ||
| consumerProguardFiles("consumer-rules.pro") | ||
| } | ||
| compileOptions { | ||
| sourceCompatibility = JavaVersion.VERSION_11 | ||
| targetCompatibility = JavaVersion.VERSION_11 | ||
| } | ||
|
|
||
| } |
There was a problem hiding this comment.
The compileSdk block uses version = release(36), which is invalid Gradle Kotlin DSL and will cause compilation errors. Additionally, instead of manually configuring standard Android library properties, you should use the custom nowinandroid.android.library convention plugin to ensure consistent configuration (compileSdk, minSdk, Java version, etc.) across all modules in the project.
plugins {
alias(libs.plugins.nowinandroid.android.library)
}
android {
namespace = "com.smmousavi.i_core.common"
}| plugins { | ||
| alias(libs.plugins.android.library) | ||
| } | ||
|
|
||
| android { | ||
| namespace = "com.smmousavi.i_core.database" | ||
| compileSdk { | ||
| version = release(36) | ||
| } | ||
|
|
||
| defaultConfig { | ||
| minSdk = 24 | ||
|
|
||
| testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" | ||
| consumerProguardFiles("consumer-rules.pro") | ||
| } | ||
| compileOptions { | ||
| sourceCompatibility = JavaVersion.VERSION_11 | ||
| targetCompatibility = JavaVersion.VERSION_11 | ||
| } | ||
|
|
||
| } |
There was a problem hiding this comment.
The compileSdk block uses version = release(36), which is invalid Gradle Kotlin DSL and will cause compilation errors. Additionally, instead of manually configuring standard Android library properties, you should use the custom nowinandroid.android.library convention plugin to ensure consistent configuration (compileSdk, minSdk, Java version, etc.) across all modules in the project.
plugins {
alias(libs.plugins.nowinandroid.android.library)
}
android {
namespace = "com.smmousavi.i_core.database"
}| plugins { | ||
| alias(libs.plugins.android.library) | ||
| } | ||
|
|
||
| android { | ||
| namespace = "com.smmousavi.i_core.designsystem" | ||
| compileSdk { | ||
| version = release(36) | ||
| } | ||
|
|
||
| defaultConfig { | ||
| minSdk = 24 | ||
|
|
||
| testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" | ||
| consumerProguardFiles("consumer-rules.pro") | ||
| } | ||
| compileOptions { | ||
| sourceCompatibility = JavaVersion.VERSION_11 | ||
| targetCompatibility = JavaVersion.VERSION_11 | ||
| } | ||
|
|
||
| } |
There was a problem hiding this comment.
The compileSdk block uses version = release(36), which is invalid Gradle Kotlin DSL and will cause compilation errors. Additionally, instead of manually configuring standard Android library properties, you should use the custom nowinandroid.android.library convention plugin to ensure consistent configuration (compileSdk, minSdk, Java version, etc.) across all modules in the project.
plugins {
alias(libs.plugins.nowinandroid.android.library)
}
android {
namespace = "com.smmousavi.i_core.designsystem"
}| plugins { | ||
| alias(libs.plugins.android.library) | ||
| } | ||
|
|
||
| android { | ||
| namespace = "com.smmousavi.i_core.presentation" | ||
| compileSdk { | ||
| version = release(36) | ||
| } | ||
|
|
||
| defaultConfig { | ||
| minSdk = 24 | ||
|
|
||
| testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" | ||
| consumerProguardFiles("consumer-rules.pro") | ||
| } | ||
| compileOptions { | ||
| sourceCompatibility = JavaVersion.VERSION_11 | ||
| targetCompatibility = JavaVersion.VERSION_11 | ||
| } | ||
|
|
||
| } |
There was a problem hiding this comment.
The compileSdk block uses version = release(36), which is invalid Gradle Kotlin DSL and will cause compilation errors. Additionally, instead of manually configuring standard Android library properties, you should use the custom nowinandroid.android.library convention plugin to ensure consistent configuration (compileSdk, minSdk, Java version, etc.) across all modules in the project.
plugins {
alias(libs.plugins.nowinandroid.android.library)
}
android {
namespace = "com.smmousavi.i_core.presentation"
}| plugins { | ||
| alias(libs.plugins.android.library) | ||
| } | ||
|
|
||
| android { | ||
| namespace = "com.smmousavi.i_feature.search" | ||
| compileSdk { | ||
| version = release(36) | ||
| } | ||
|
|
||
| defaultConfig { | ||
| minSdk = 24 | ||
|
|
||
| testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" | ||
| consumerProguardFiles("consumer-rules.pro") | ||
| } | ||
| compileOptions { | ||
| sourceCompatibility = JavaVersion.VERSION_11 | ||
| targetCompatibility = JavaVersion.VERSION_11 | ||
| } | ||
|
|
||
| } |
There was a problem hiding this comment.
The compileSdk block uses version = release(36), which is invalid Gradle Kotlin DSL and will cause compilation errors. Additionally, instead of manually configuring standard Android library properties, you should use the custom nowinandroid.android.library convention plugin to ensure consistent configuration (compileSdk, minSdk, Java version, etc.) across all modules in the project.
plugins {
alias(libs.plugins.nowinandroid.android.library)
}
android {
namespace = "com.smmousavi.i_feature.search"
}| @@ -0,0 +1,10 @@ | |||
| plugins { | |||
| alias(libs.plugins.nowinandroid.jvm.library) | |||
| id("kotlinx-serialization") | |||
| alias(libs.plugins.nowinandroid.android.library) | ||
| alias(libs.plugins.nowinandroid.android.library.jacoco) | ||
| alias(libs.plugins.nowinandroid.hilt) | ||
| id("kotlinx-serialization") |
| <?xml version="1.0" encoding="utf-8"?> | ||
| <resources> | ||
|
|
||
| <style name="Theme.Nowinandroid" parent="android:Theme.Material.Light.NoActionBar" /> |
There was a problem hiding this comment.
The parent theme is set to android:Theme.Material.Light.NoActionBar, which is an ancient platform theme. For a modern Jetpack Compose app using Material 3, it should inherit from Theme.Material3.DayNight.NoActionBar to ensure proper styling, dark mode support, and compatibility with edge-to-edge system UI.
| <style name="Theme.Nowinandroid" parent="android:Theme.Material.Light.NoActionBar" /> | |
| <style name="Theme.Nowinandroid" parent="Theme.Material3.DayNight.NoActionBar" /> |
| @@ -0,0 +1,3 @@ | |||
| <resources> | |||
| <string name="app_name">app-imbd</string> | |||
| } | ||
|
|
||
| android { | ||
| namespace = "com.smmousavi.domain" |
There was a problem hiding this comment.
The namespace for the :i_core:domain module is com.smmousavi.domain, whereas all other core modules use the com.smmousavi.i_core.* prefix (e.g., com.smmousavi.i_core.common, com.smmousavi.i_core.database). It is recommended to rename the package and namespace to com.smmousavi.i_core.domain for consistency.
namespace = "com.smmousavi.i_core.domain"
DO NOT CREATE A PULL REQUEST WITHOUT READING THESE INSTRUCTIONS
Instructions
Thanks for submitting a pull request. To accept your pull request we need you do a few things:
If this is your first pull request
Ensure tests pass and code is formatted correctly
DemoDebugvariant by running./gradlew testDemoDebug./gradlew spotlessApplyAdd a description
We need to know what you've done and why you've done it. Include a summary of what your pull request contains, and why you have made these changes. Include links to any relevant issues which it fixes.
Here's an example.
NOW DELETE THIS LINE AND EVERYTHING ABOVE IT
What I have done and why
<add your PR description here>