diff --git a/docs/StardustDocs/topics/Compiler-Plugin.md b/docs/StardustDocs/topics/Compiler-Plugin.md
index 5cd1dbfa3..e9d9452ac 100644
--- a/docs/StardustDocs/topics/Compiler-Plugin.md
+++ b/docs/StardustDocs/topics/Compiler-Plugin.md
@@ -1,9 +1,34 @@
# Kotlin DataFrame Compiler Plugin
-Kotlin DataFrame compiler plugin: available in Gradle projects, is coming to Kotlin Notebook and Maven projects soon.
+
+Explore the Kotlin DataFrame Compiler Plugin —
+a powerful tool for on-the-fly generating type-safe accessors in DataFrames.
+
-Check out this video that shows how expressions update the schema of a dataframe:
+
+Explore the Kotlin DataFrame Compiler Plugin —
+a powerful tool for on-the-fly generating type-safe accessors in DataFrames.
+
+
+
+Explore the Kotlin DataFrame Compiler Plugin —
+a powerful tool for on-the-fly generating type-safe accessors in DataFrames.
+
+
+
+> Now available in Gradle projects, is coming to Kotlin Notebook and Maven projects soon.
+
+**Kotlin DataFrame Compiler Plugin** is a Kotlin compiler plugin that automatically generates
+**[type-safe extension properties](extensionPropertiesApi.md)** for your DataFrame,
+allowing you to access columns and rows in a type-safe way and avoid mistakes in column names.
+## Why use it?
+
+- Access columns as regular properties: `df.name` instead of `df["name"]`.
+- Get full IDE and compiler support: autocompletion, refactoring, and type checking.
+- Improve code readability and safety when working with DataFrame.
+
+Check out this video that shows how expressions update the schema of a dataframe:
@@ -113,3 +138,9 @@ fun main() {
```
[Learn more](dataSchema.md) about data schema declarations
+
+## Examples
+
+* [Kotlin DataFrame in the IntelliJ IDEA project example](https://github.com/Kotlin/dataframe/blob/master/examples/kotlin-dataframe-plugin-example)
+ — an IntelliJ IDEA project showcasing simple DataFrame expressions using the Compiler Plugin.
+* [](compilerPluginExamples.md) — few examples of Compiler Plugin usages.
diff --git a/docs/StardustDocs/topics/Home.topic b/docs/StardustDocs/topics/Home.topic
index c95bb4708..b38d03a63 100644
--- a/docs/StardustDocs/topics/Home.topic
+++ b/docs/StardustDocs/topics/Home.topic
@@ -28,6 +28,7 @@
Featured topics
+
diff --git a/docs/StardustDocs/topics/compilerPluginExamples.md b/docs/StardustDocs/topics/compilerPluginExamples.md
index 8ee59df85..a12bc4584 100644
--- a/docs/StardustDocs/topics/compilerPluginExamples.md
+++ b/docs/StardustDocs/topics/compilerPluginExamples.md
@@ -3,6 +3,9 @@
This page provides a few examples that you can copy directly to your project.
[Schema info](staticInterpretation.md#schema-info) will be a convenient way to observe the result of different operations.
+> See also a [Kotlin DataFrame in the IntelliJ IDEA project example](https://github.com/Kotlin/dataframe/blob/master/examples/kotlin-dataframe-plugin-example)
+> — an IntelliJ IDEA project showcasing simple DataFrame expressions using the Compiler Plugin.
+
### Example 1
```kotlin
diff --git a/docs/StardustDocs/topics/guides/Guides-And-Examples.md b/docs/StardustDocs/topics/guides/Guides-And-Examples.md
index 1f262c28c..49dfed943 100644
--- a/docs/StardustDocs/topics/guides/Guides-And-Examples.md
+++ b/docs/StardustDocs/topics/guides/Guides-And-Examples.md
@@ -56,6 +56,11 @@ Explore our structured, in-depth guides to steadily improve your Kotlin DataFram
Explore our extensive collection of practical examples and real-world analytics workflows.
+* [Kotlin DataFrame Compiler Plugin Example](https://github.com/Kotlin/dataframe/blob/master/examples/kotlin-dataframe-plugin-example)
+ — a simple project demonstrating the usage of the [compiler plugin](Compiler-Plugin.md),
+ showcasing DataFrame expressions with [extension properties](extensionPropertiesApi.md)
+ that are generated on-the-fly in the IDEA project.
+
* [Titanic Example](https://github.com/Kotlin/dataframe/blob/master/examples/notebooks/titanic/Titanic.ipynb)
— discover the famous "Titanic"
dataset with the Kotlin DataFrame analysis toolkit
diff --git a/examples/README.md b/examples/README.md
index a23741ae9..d851246bc 100644
--- a/examples/README.md
+++ b/examples/README.md
@@ -1,6 +1,8 @@
# Examples of Kotlin Dataframe
### Idea examples
+* [plugin example](kotlin-dataframe-plugin-example) IDEA project with a
+[Kotlin DataFrame Compiler Plugin](https://kotlin.github.io/dataframe/compiler-plugin.html) example.
* [movies](idea-examples/movies) Using extension properties [Access API](https://kotlin.github.io/dataframe/apilevels.html) to perform a data cleaning task
* [titanic](idea-examples/titanic)
* [youtube](idea-examples/youtube)
diff --git a/examples/kotlin-dataframe-plugin-example/README.md b/examples/kotlin-dataframe-plugin-example/README.md
new file mode 100644
index 000000000..bb6e1ef57
--- /dev/null
+++ b/examples/kotlin-dataframe-plugin-example/README.md
@@ -0,0 +1,11 @@
+# Kotlin DataFrame Compiler Plugin Example
+
+An IntelliJ IDEA project demonstrating the use of the
+[Kotlin DataFrame Compiler Plugin](https://kotlin.github.io/dataframe/compiler-plugin.html).
+
+> **Note:** This project uses **dev versions** of the Kotlin and the Kotlin DataFrame plugin.
+> See [build.gradle.kts](build.gradle.kts) for details.
+
+For proper functionality in IntelliJ IDEA requires version 2025.2 or higher
+(Currently available only in [IntelliJ IDEA EAP](https://www.jetbrains.com/idea/nextversion/?_gl=1*1ojxffu*_gcl_au*MTk5NzUwODYzOS4xNzQ2NzkxMDMz*_ga*MTE0ODQ1MzY3OS4xNzM4OTY1NzM3*_ga_9J976DJZ68*czE3NDkyMTM4MzkkbzE5OCRnMSR0MTc0OTIxMzg0MSRqNTgkbDAkaDA.)
+).
diff --git a/examples/kotlin-dataframe-plugin-example/build.gradle.kts b/examples/kotlin-dataframe-plugin-example/build.gradle.kts
new file mode 100644
index 000000000..32329694f
--- /dev/null
+++ b/examples/kotlin-dataframe-plugin-example/build.gradle.kts
@@ -0,0 +1,25 @@
+plugins {
+ kotlin("jvm") version "2.2.20-dev-3524"
+ kotlin("plugin.dataframe") version "2.2.20-dev-3524"
+}
+
+group = "org.example"
+version = "1.0-SNAPSHOT"
+
+repositories {
+ maven("https://packages.jetbrains.team/maven/p/kt/dev/")
+ mavenCentral()
+}
+
+
+dependencies {
+ implementation("org.jetbrains.kotlinx:dataframe:1.0.0-Beta2")
+ testImplementation(kotlin("test"))
+}
+
+tasks.test {
+ useJUnitPlatform()
+}
+kotlin {
+ jvmToolchain(11)
+}
\ No newline at end of file
diff --git a/examples/kotlin-dataframe-plugin-example/gradle.properties b/examples/kotlin-dataframe-plugin-example/gradle.properties
new file mode 100644
index 000000000..23817686a
--- /dev/null
+++ b/examples/kotlin-dataframe-plugin-example/gradle.properties
@@ -0,0 +1,2 @@
+kotlin.code.style=official
+kotlin.incremental=false
diff --git a/examples/kotlin-dataframe-plugin-example/settings.gradle.kts b/examples/kotlin-dataframe-plugin-example/settings.gradle.kts
new file mode 100644
index 000000000..243729eb9
--- /dev/null
+++ b/examples/kotlin-dataframe-plugin-example/settings.gradle.kts
@@ -0,0 +1,11 @@
+pluginManagement {
+ repositories {
+ maven("https://packages.jetbrains.team/maven/p/kt/dev/")
+ mavenCentral()
+ gradlePluginPortal()
+ }
+}
+plugins {
+ id("org.gradle.toolchains.foojay-resolver-convention") version "0.8.0"
+}
+rootProject.name = "kdf_plugin_example"
\ No newline at end of file
diff --git a/examples/kotlin-dataframe-plugin-example/src/main/kotlin/org/jetbrains/kotlinx/dataframe/examples/plugin/Main.kt b/examples/kotlin-dataframe-plugin-example/src/main/kotlin/org/jetbrains/kotlinx/dataframe/examples/plugin/Main.kt
new file mode 100644
index 000000000..d0c9952fd
--- /dev/null
+++ b/examples/kotlin-dataframe-plugin-example/src/main/kotlin/org/jetbrains/kotlinx/dataframe/examples/plugin/Main.kt
@@ -0,0 +1,79 @@
+package org.jetbrains.kotlinx.dataframe.examples.plugin
+
+import org.jetbrains.kotlinx.dataframe.DataFrame
+import org.jetbrains.kotlinx.dataframe.annotations.ColumnName
+import org.jetbrains.kotlinx.dataframe.annotations.DataSchema
+import org.jetbrains.kotlinx.dataframe.api.*
+import org.jetbrains.kotlinx.dataframe.io.readCsv
+import org.jetbrains.kotlinx.dataframe.io.writeCsv
+import java.net.URL
+
+/*
+ * Declare data schema for the DataFrame from jetbrains_repositories.csv.
+ */
+@DataSchema
+data class Repositories(
+ @ColumnName("full_name")
+ val fullName: String,
+ @ColumnName("html_url")
+ val htmlUrl: URL,
+ @ColumnName("stargazers_count")
+ val stargazersCount: Int,
+ val topics: String,
+ val watchers: Int
+)
+
+/*
+ * Define kinds of repositories:
+ */
+enum class RepoKind {
+ Kotlin, IntelliJ, Other
+}
+
+/*
+ * A rule for determining the kind of repository based on its name and topics.
+ */
+fun getKind(fullName: String, topics: List): RepoKind {
+ fun checkContains(name: String) = name in topics || fullName.lowercase().contains(name)
+
+ return when {
+ checkContains("kotlin") -> RepoKind.Kotlin
+ checkContains("idea") || checkContains("intellij") -> RepoKind.IntelliJ
+ else -> RepoKind.Other
+ }
+}
+
+
+fun main() {
+ val repos = DataFrame
+ // Read DataFrame from the CSV file.
+ .readCsv("https://raw.githubusercontent.com/Kotlin/dataframe/master/data/jetbrains_repositories.csv")
+ // And convert it to match the `Repositories` schema.
+ .convertTo()
+
+ // Rename columns to CamelCase
+ val reposUpdated = repos.renameToCamelCase()
+ // Convert values in the "topic" column (which were `String` initially)
+ // to the list of topics.
+ .convert { topics }.with {
+ val inner = it.removePrefix("[").removeSuffix("]")
+ if (inner.isEmpty()) emptyList() else inner.split(',').map(String::trim)
+ }
+ // Filter rows, keeping only repos with more than 150 stars.
+ .filter { it.stargazersCount > 150 }
+ // Add a new column with the number of topics.
+ .add("topicCount") { topics.size }
+ // Add a new column with the kind of repository.
+ .add("kind") { getKind(fullName, topics) }
+
+ // Write an updated DataFrame to a CSV file.
+ reposUpdated.writeCsv("jetbrains_repositories_new.csv")
+
+ // TODO: Add Kandy Plot
+ /*reposUpdated.groupBy { kind }.max { stargazersCount }.plot {
+ bars {
+ x(kind)
+ y(stargazersCount)
+ }
+ }*/
+}
diff --git a/settings.gradle.kts b/settings.gradle.kts
index bade37d6a..cbe75f5ae 100644
--- a/settings.gradle.kts
+++ b/settings.gradle.kts
@@ -50,3 +50,5 @@ include("dataframe-openapi-generator")
include("dataframe-geo")
include("plugins:public-api-modifier")
include("dataframe-compiler-plugin-core")
+
+includeBuild("examples/kotlin-dataframe-plugin-example")