Files
.github
client
features
auth
common
content
binary
client
common
server
text
README.md
files
posts
publication
roles
status
template
users
gradle
idea
kotlin-js-store
publicators
server
services
targets
.gitignore
PostsSystem.drawio
README.md
build.gradle
changelog_parser.sh
defaultAndroidSettings.gradle
extensions.gradle
github_release.gradle
gradle.properties
gradlew
gradlew.bat
mppAndroidProject.gradle
mppJavaProject.gradle
mppJsProject.gradle
mppProjectWithSerialization.gradle
prepare_client.sh
publish.gradle
publish.kpsb
settings.gradle
core/features/content

How to create content?

For example, you want to create content named MyFormat. To do this, you must perform the following actions:

  1. Copy template folder from core/features in core/features/content
  2. Rename this folder in myformat
  3. Inside the myformat folder rename all the template on content.myformat
  4. In the settings.gradle file in the includes array add the following code:
        String[] includes = [
            ...
            ":features:content:myformat:common",
            ":features:content:myformat:client",
            ":features:content:myformat:server",
            ...
        ]
    
  5. In the core/features/content/myformat/common/src folder create folders with appropriate subfolders commonMain/kotlin/dev/inmo/postssystem/features/content/myformat/common:
  6. In the last folder сommon, create a data class and the configurator as shown below:
       // MyFormatContent.kt
       @Serializable
       data class MyFormatContent(
           // Your code
       ) : Content
    
       // MyFormatContentSerializerModuleConfigurator.kt
       object MyFormatContentSerializerModuleConfigurator : ContentSerializersModuleConfigurator.Element {
           override fun PolymorphicModuleBuilder<Content>.invoke() {
               subclass(MyFormatContent::class, MyFormatContent.serializer())
           }
       }
    
  7. In two di.kt file located in core/client/src/commonMain/kotlin/dev/inmo/postsystem/client and core/server/src/main/java/dev/inmo/postsystem/client respectively add the following string:
    singleWithRandomQualifier<ContentSerializersModuleConfigurator.Element> { MyFormatContentSerializerModuleConfigurator }

Client

Currently, this information is actual only for JS (browser) clients. Other client platforms will be added later

Besides, you may (and it is strongly recommended to) create your own client ContentClientProvider realization. This realization will contain all main functions for drawing of content on the client side.

Server

On the server side it is required to