Commit d04cd1f
committed
refactor: Modularize project and introduce convention plugins
This commit refactors the project into a multi-module architecture and introduces Gradle convention plugins to streamline the build process. The core logic is separated into `core` and `feature` modules, each with distinct `data`, `domain`, and `presentation` layers. This modularization improves scalability, maintainability, and build times.
- **refactor(project)!**: Migrated from a monolithic `composeApp` to a multi-module architecture. Source code has been moved from `composeApp` into new `core` and `feature` modules.
- **feat(build)**: Introduced Gradle convention plugins (`cmp.application`, `cmp.library`, `cmp.feature`, `kmp.library`, `room`, `buildkonfig`) to standardize module configurations.
- **chore(build)**: Updated Gradle build scripts (`build.gradle.kts`, `settings.gradle.kts`, `gradle/libs.versions.toml`) to support the new modular structure and convention plugins.
- **chore(tests)**: Removed placeholder and boilerplate test files (`ExampleInstrumentedTest.kt`, `ExampleUnitTest.kt`) from all modules.
- **refactor(di)**: Updated Koin dependency injection modules to reflect the new module structure.
- **refactor(auth)**: Moved authentication-related models (`DeviceStart`, `DeviceTokenSuccess`) to the `core:domain` and `core:data` modules and renamed them for clarity (e.g., `GithubDeviceStart`).
- **refactor(network)**: Centralized `HttpClient` creation and rate-limiting logic into the `core:data` module.1 parent 2feff47 commit d04cd1f
477 files changed
Lines changed: 4217 additions & 6109 deletions
File tree
- build-logic
- convention
- src/main/kotlin
- zed/rainxch/githubstore/convention
- composeApp
- src
- androidMain/kotlin/zed/rainxch/githubstore
- app/di
- core
- data
- local
- data_store
- db
- services
- domain
- presentation/utils
- feature
- auth/data
- details/presentation/utils
- settings/presentation/utils
- commonMain/kotlin/zed/rainxch/githubstore
- app
- app_state
- di
- state
- components
- core
- data
- data_source
- local/db
- services
- domain
- model
- repository
- presentation
- components
- model
- utils
- feature
- auth
- data
- domain/repository
- details/presentation/utils
- developer_profile/domain
- model
- repository
- home/domain
- model
- repository
- search/domain
- model
- repository
- settings/presentation/utils
- network
- jvmMain/kotlin/zed/rainxch/githubstore
- app/di
- core
- data/services
- domain
- presentation/utils
- feature
- auth/data
- details/presentation/utils
- core
- data
- src
- androidDeviceTest/kotlin/zed/rainxch/core/data
- androidHostTest/kotlin/zed/rainxch/core/data
- androidMain/kotlin/zed/rainxch/core/data
- commonMain/kotlin/zed/rainxch/core/data
- data_source
- impl
- dto
- local
- data_store
- db
- dao
- entities
- logging
- mappers
- network
- interceptor
- repository
- services
- iosMain/kotlin/zed/rainxch/core/data
- domain
- src
- androidDeviceTest/kotlin/zed/rainxch/core/domain
- androidHostTest/kotlin/zed/rainxch/core/domain
- androidMain/kotlin/zed/rainxch/core/domain
- commonMain/kotlin/zed/rainxch/core/domain
- logging
- model
- network
- repository
- system
- use_cases
- iosMain/kotlin/zed/rainxch/core/domain
- jvmMain/kotlin/zed/rainxch/core/domain
- presentation
- src
- androidDeviceTest/kotlin/zed/rainxch/core/presentation
- androidHostTest/kotlin/zed/rainxch/core/presentation
- androidMain/kotlin/zed/rainxch/core/presentation
- commonMain
- composeResources/font
- kotlin/zed/rainxch/core/presentation
- components
- locals
- model
- theme
- utils
- iosMain/kotlin/zed/rainxch/core/presentation
- feature
- apps
- data
- src
- androidDeviceTest/kotlin/zed/rainxch/apps/data
- androidHostTest/kotlin/zed/rainxch/apps/data
- androidMain/kotlin/zed/rainxch/apps/data
- commonMain/kotlin/zed/rainxch/apps/data
- repository
- iosMain/kotlin/zed/rainxch/apps/data
- domain
- src
- androidMain/kotlin/zed/rainxch/apps/domain
- commonMain/kotlin/zed/rainxch/apps/domain
- repository
- iosMain/kotlin/zed/rainxch/apps/domain
- presentation
- src
- androidDeviceTest/kotlin/zed/rainxch/apps/presentation
- androidHostTest/kotlin/zed/rainxch/apps/presentation
- androidMain/kotlin/zed/rainxch/apps/presentation
- commonMain/kotlin/zed/rainxch/apps/presentation
- model
- iosMain/kotlin/zed/rainxch/apps/presentation
- auth
- data
- src
- androidDeviceTest/kotlin/zed/rainxch/auth/data
- androidHostTest/kotlin/zed/rainxch/auth/data
- androidMain/kotlin/zed/rainxch/auth/data
- commonMain/kotlin/zed/rainxch/auth/data
- network
- repository
- iosMain/kotlin/zed/rainxch/auth/data
- domain
- src
- androidDeviceTest/kotlin/zed/rainxch/auth/domain
- androidHostTest/kotlin/zed/rainxch/auth/domain
- androidMain/kotlin/zed/rainxch/auth/domain
- commonMain/kotlin/zed/rainxch/auth/domain
- repository
- iosMain/kotlin/zed/rainxch/auth/domain
- presentation
- src
- androidDeviceTest/kotlin/zed/rainxch/auth/presentation
- androidHostTest/kotlin/zed/rainxch/auth/presentation
- androidMain/kotlin/zed/rainxch/auth/presentation
- commonMain/kotlin/zed/rainxch/auth/presentation
- iosMain/kotlin/zed/rainxch/auth/presentation
- details
- data
- src
- androidDeviceTest/kotlin/zed/rainxch/details/data
- androidHostTest/kotlin/zed/rainxch/details/data
- androidMain/kotlin/zed/rainxch/details/data
- commonMain/kotlin/zed/rainxch/details/data
- dto
- mappers
- model
- repository
- utils
- iosMain/kotlin/zed/rainxch/details/data
- domain
- src
- androidDeviceTest/kotlin/zed/rainxch/details/domain
- androidHostTest/kotlin/zed/rainxch/details/domain
- androidMain/kotlin/zed/rainxch/details/domain
- commonMain/kotlin/zed/rainxch/details/domain
- model
- repository
- iosMain/kotlin/zed/rainxch/details/domain
- presentation
- src
- androidDeviceTest/kotlin/zed/rainxch/details/presentation
- androidHostTest/kotlin/zed/rainxch/details/presentation
- androidMain/kotlin/zed/rainxch/details/presentation
- commonMain/kotlin/zed/rainxch/details/presentation
- components
- sections
- states
- model
- utils
- iosMain/kotlin/zed/rainxch/details/presentation
- dev-profile
- data
- src
- androidDeviceTest/kotlin/zed/rainxch/devprofile/data
- androidHostTest/kotlin/zed/rainxch/devprofile/data
- androidMain/kotlin/zed/rainxch/devprofile/data
- commonMain/kotlin/zed/rainxch/devprofile/data
- dto
- mappers
- repository
- iosMain/kotlin/zed/rainxch/devprofile/data
- domain
- src
- androidDeviceTest/kotlin/zed/rainxch/devprofile/domain
- androidHostTest/kotlin/zed/rainxch/devprofile/domain
- androidMain/kotlin/zed/rainxch/devprofile/domain
- commonMain/kotlin/zed/rainxch/devprofile/domain
- model
- repository
- iosMain/kotlin/zed/rainxch/devprofile/domain
- presentation
- src
- androidDeviceTest/kotlin/zed/rainxch/devprofile/presentation
- androidHostTest/kotlin/zed/rainxch/devprofile/presentation
- commonMain/kotlin/zed/rainxch/devprofile/presentation
- components
- iosMain/kotlin/zed/rainxch/devprofile/presentation
- favourites
- data
- src
- androidDeviceTest/kotlin/zed/rainxch/favourites/data
- androidHostTest/kotlin/zed/rainxch/favourites/data
- androidMain/kotlin/zed/rainxch/favourites/data
- commonMain/kotlin/zed/rainxch/favourites/data
- iosMain/kotlin/zed/rainxch/favourites/data
- domain
- src
- androidDeviceTest/kotlin/zed/rainxch/favourites/domain
- androidHostTest/kotlin/zed/rainxch/favourites/domain
- androidMain/kotlin/zed/rainxch/favourites/domain
- commonMain/kotlin/zed/rainxch/favourites/domain
- iosMain/kotlin/zed/rainxch/favourites/domain
- presentation
- src
- androidDeviceTest/kotlin/zed/rainxch/favourites/presentation
- androidHostTest/kotlin/zed/rainxch/favourites/presentation
- commonMain/kotlin/zed/rainxch/favourites/presentation
- components
- mappers
- model
- iosMain/kotlin/zed/rainxch/favourites/presentation
- home
- data
- src
- androidDeviceTest/kotlin/zed/rainxch/home/data
- androidHostTest/kotlin/zed/rainxch/home/data
- androidMain/kotlin/zed/rainxch/home/data
- commonMain/kotlin/zed/rainxch/home/data
- data_source
- repository
- iosMain/kotlin/zed/rainxch/home/data
- domain
- src
- androidDeviceTest/kotlin/zed/rainxch/home/domain
- androidHostTest/kotlin/zed/rainxch/home/domain
- androidMain/kotlin/zed/rainxch/home/domain
- commonMain/kotlin/zed/rainxch/home/domain
- repository
- iosMain/kotlin/zed/rainxch/home/domain
- presentation
- src
- androidDeviceTest/kotlin/zed/rainxch/home/presentation
- androidHostTest/kotlin/zed/rainxch/home/presentation
- androidMain/kotlin/zed/rainxch/home/presentation
- commonMain/kotlin/zed/rainxch/home/presentation
- components
- model
- iosMain/kotlin/zed/rainxch/home/presentation
- search
- data
- src
- androidDeviceTest/kotlin/zed/rainxch/search/data
- androidHostTest/kotlin/zed/rainxch/search/data
- androidMain/kotlin/zed/rainxch/search/data
- commonMain/kotlin/zed/rainxch/search/data
- repository
- dto
- utils
- iosMain/kotlin/zed/rainxch/search/data
- domain
- src
- androidDeviceTest/kotlin/zed/rainxch/domain
- androidHostTest/kotlin/zed/rainxch/domain
- androidMain/kotlin/zed/rainxch/domain
- commonMain/kotlin/zed/rainxch/domain
- model
- repository
- iosMain/kotlin/zed/rainxch/domain
- presentation
- src
- androidDeviceTest/kotlin/zed/rainxch/search/presentation
- androidHostTest/kotlin/zed/rainxch/search/presentation
- androidMain/kotlin/zed/rainxch/search/presentation
- commonMain/kotlin/zed/rainxch/search/presentation
- components
- utils
- iosMain/kotlin/zed/rainxch/search/presentation
- settings
- data
- src
- androidDeviceTest/kotlin/zed/rainxch/settings/data
- androidHostTest/kotlin/zed/rainxch/settings/data
- androidMain/kotlin/zed/rainxch/settings/data
- commonMain/kotlin/zed/rainxch/settings/data
- repository
- iosMain/kotlin/zed/rainxch/settings/data
- domain
- src
- androidDeviceTest/kotlin/zed/rainxch/settings/domain
- androidHostTest/kotlin/zed/rainxch/settings/domain
- androidMain/kotlin/zed/rainxch/settings/domain
- commonMain/kotlin/zed/rainxch/settings/domain
- repository
- iosMain/kotlin/zed/rainxch/settings/domain
- presentation
- src
- androidDeviceTest/kotlin/zed/rainxch/settings/presentation
- androidHostTest/kotlin/zed/rainxch/settings/presentation
- androidMain/kotlin/zed/rainxch/settings/presentation
- commonMain/kotlin/zed/rainxch/settings/presentation
- components
- sections
- utils
- iosMain/kotlin/zed/rainxch/settings/presentation
- starred
- data
- src
- androidDeviceTest/kotlin/zed/rainxch/starred/data
- androidHostTest/kotlin/zed/rainxch/starred/data
- androidMain/kotlin/zed/rainxch/starred/data
- commonMain/kotlin/zed/rainxch/starred/data
- iosMain/kotlin/zed/rainxch/starred/data
- domain
- src
- androidDeviceTest/kotlin/zed/rainxch/starred/domain
- androidHostTest/kotlin/zed/rainxch/starred/domain
- androidMain/kotlin/zed/rainxch/starred/domain
- commonMain/kotlin/zed/rainxch/starred/domain
- iosMain/kotlin/zed/rainxch/starred/domain
- presentation
- src
- androidDeviceTest/kotlin/zed/rainxch/starred/presentation
- androidHostTest/kotlin/zed/rainxch/starred/presentation
- androidMain/kotlin/zed/rainxch/starred/presentation
- commonMain/kotlin/zed/rainxch/starred/presentation
- components
- mappers
- model
- utils
- iosMain/kotlin/zed/rainxch/starred/presentation
- gradle
Some content is hidden
Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
Lines changed: 19 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
Lines changed: 42 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
Lines changed: 37 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
Lines changed: 26 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
Lines changed: 39 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
Lines changed: 28 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
Lines changed: 36 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
Lines changed: 28 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
Lines changed: 24 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
0 commit comments