# Allow place platform Kotlin code in common module in files with special extension

**URL:** <https://discuss.kotlinlang.org/t/allow-place-platform-kotlin-code-in-common-module-in-files-with-special-extension/13178>\
**Category:** Language Design\
**Created:** [June 22, 2019, 1:05pm UTC](https://discuss.kotlinlang.org/t/allow-place-platform-kotlin-code-in-common-module-in-files-with-special-extension/13178 "2019-06-22T13:05:46Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![terehovks3](https://avatars.discourse-cdn.com/v4/letter/t/7ba0ec/32.png) [@terehovks3](https://discuss.kotlinlang.org/u/terehovks3)\
**Post date:** [June 22, 2019, 1:05pm UTC](https://discuss.kotlinlang.org/t/allow-place-platform-kotlin-code-in-common-module-in-files-with-special-extension/13178/1 "2019-06-22T13:05:47Z")

</div>

In Kotlin 1.3 we can place all platform code in one module but platform code still placed in separate source sets.

I think it would be nice to place all code of specific feature in one source set. It will simplify navigation between common and platform and make project structure more flexible.  
Also it will make possible to implement [Screaming Architecture](https://blog.cleancoder.com/uncle-bob/2011/09/30/Screaming-Architecture.html)

Extension of platform sources can be .\<target\_name\>.kt.  
Example of gradle module structure:

```auto
    src/main/kotlin
    └─catalog
      └─CatalogPresenter.kt
      └─CatalogFragment.android.kt
      └─CatalogViewController.ios.kt
      └─CatalogVueComponent.js.kt
    └─shoppingCart
      └─domain
        └─GetShoppingCartUseCase.kt
        └─AddInShoppingCartUseCase.kt
      └─data
        └─ShoppingCartRepository.kt
        └─RoomShoppingCartRepository.android.kt
        └─RealmShoppingCartRepository.ios.kt
        └─LocalStorageShoppingCartRepository.js.kt
      └─ShoppingCartPresenter.kt
      └─ShoppingCartFragment.android.kt
      └─ShoppingCartViewController.ios.kt
      └─ShoppingCartVueComponent.js.kt

```
