{"id":30462820,"url":"https://github.com/davils-com/kreate","last_synced_at":"2026-04-26T14:00:45.784Z","repository":{"id":350504314,"uuid":"1205235813","full_name":"davils-com/kreate","owner":"davils-com","description":"A helper plugin for setting up enterprise-grade Gradle Kotlin projects.","archived":false,"fork":false,"pushed_at":"2026-04-26T12:08:34.000Z","size":499,"stargazers_count":5,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-26T14:00:39.520Z","etag":null,"topics":["cinterop","constants","gradle","jvm","maven","multiplatform","publishing","rust","setup","testing"],"latest_commit_sha":null,"homepage":"https://davils-com.github.io/kreate/","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/davils-com.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-04-08T19:12:19.000Z","updated_at":"2026-04-26T12:07:02.000Z","dependencies_parsed_at":null,"dependency_job_id":"4bc64bb0-eb86-4da5-bfd0-6b16c6fdacea","html_url":"https://github.com/davils-com/kreate","commit_stats":null,"previous_names":["davils-com/kreate"],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/davils-com/kreate","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/davils-com%2Fkreate","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/davils-com%2Fkreate/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/davils-com%2Fkreate/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/davils-com%2Fkreate/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/davils-com","download_url":"https://codeload.github.com/davils-com/kreate/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/davils-com%2Fkreate/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32299644,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-26T09:34:17.070Z","status":"ssl_error","status_checked_at":"2026-04-26T09:34:00.993Z","response_time":129,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cinterop","constants","gradle","jvm","maven","multiplatform","publishing","rust","setup","testing"],"created_at":"2025-08-23T23:02:37.218Z","updated_at":"2026-04-26T14:00:45.773Z","avatar_url":"https://github.com/davils-com.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/images/kreate.svg\" alt=\"Kreate Logo\" width=\"250\"\u003e\n\u003c/p\u003e\n\n\u003ch1 align=\"center\"\u003e🏗️ Kreate\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://opensource.org/licenses/Apache-2.0\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/License-Apache_2.0-Redtronics?style=for-the-badge\u0026logo=apache\u0026labelColor=white\u0026color=blue\" alt=\"License\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://kotlinlang.org\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Kotlin-2.3.21-Redtronics?style=for-the-badge\u0026logo=kotlin\u0026labelColor=white\u0026color=purple\" alt=\"Kotlin\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://gradle.org\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Gradle-9.4.1-Redtronics?style=for-the-badge\u0026logo=gradle\u0026labelColor=white\u0026color=02303A\" alt=\"Gradle\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cstrong\u003eKreate\u003c/strong\u003e is an opinionated Gradle helper plugin for building Kotlin Multiplatform (KMP) and JVM projects.\n  It provides a unified DSL to manage platform configurations, native C-Interop (Rust), JNI, documentation, testing, and publishing workflows with minimal boilerplate.\n\u003c/p\u003e\n\n---\n\n## 📋 Table of Contents\n\n- [Overview](#-overview)\n- [Core Features](#-core-features)\n- [Quick Start](#-quick-start)\n- [Configuration Reference](#-configuration-reference)\n- [Documentation](#-documentation)\n- [Third-Party Software](#-third-party-software)\n- [Contributing](#-contributing)\n- [License \u0026 Ethics](#-license--ethics)\n\n---\n\n## 🔍 Overview\n\nManaging Kotlin Multiplatform and JVM configurations can be complex. **Kreate** simplifies this by:\n\n*   **Standardizing Platform Setup**: A consistent DSL for JVM, Linux, macOS, and Windows.\n*   **Integrating Native Code**: Automated bridge for Rust (via C-Interop) and C/C++ (via JNI).\n*   **Enforcing Quality Standards**: Sensible defaults like `explicitApi()` and `allWarningsAsErrors`.\n*   **Declarative Infrastructure**: Focus on project requirements while the plugin handles the underlying Gradle configuration.\n\n---\n\n## ✨ Core Features\n\n### 🏗️ Platform Support\nKreate detects the project type (JVM, Android, or KMP) and applies appropriate optimizations:\n- **JVM Support**: Configures Java 21+ toolchains and compiler options.\n- **Multiplatform DSL**: Unified targets for Linux, macOS, and Windows.\n- **Consistent Toolchains**: Ensures Java and Kotlin versions are synchronized across modules.\n\n### 🦀 Rust C-Interop\nAutomates the integration of Rust libraries into Kotlin Multiplatform:\n- **Toolchain Integration**: Manages `cargo` and cross-compilation targets.\n- **Project Scaffolding**: Can generate Rust library structures if missing.\n- **Header Synchronization**: Manages C headers and Kotlin bindings.\n- **Multi-Arch Support**: Targets `x86_64`, `aarch64`, and others.\n\n### 🔌 JNI Support (Java Native Interface)\nSimplified integration for native C/C++ code in JVM projects:\n- **CMake Integration**: Automatically handles CMake-based native builds.\n- **Runtime Library Path**: Automatically configures `java.library.path` for testing and execution.\n- **Consistent Layout**: Follows a structured layout for native sources (mirroring C-Interop style).\n\n### 🧪 Testing Pipeline\nPre-configured **Kotest** integration for robust validation:\n- **Parallel Execution**: Scales based on CPU availability.\n- **Standardized Logging**: Clear output for test states (Passed, Skipped, Started).\n- **Automated Reporting**: Generates HTML and XML reports for CI/CD.\n\n### 📦 Publishing \u0026 POM Management\nStandardizes the release process for libraries:\n- **Registry Support**: Built-in configurations for Maven Central and GitLab.\n- **Signing**: Integrated GPG signing for Maven Central requirements.\n- **POM Metadata**: Declarative DSL for licenses, developers, and SCM information.\n\n---\n\n## 📖 Documentation\n\nDetailed documentation for Kreate is available in the following locations:\n\n- **[Project Docs](./docs)**: Comprehensive guides and topic-specific information.\n- **[API Reference](https://davils.github.io/kreate/api)**: Dokka-generated API documentation.\n- **[Examples](./example)**: A reference implementation demonstrating various configuration scenarios.\n\nTo generate the documentation locally, run:\n```bash\n./gradlew dokkaHtml\n```\n\n---\n\n## 🛠️ Quick Start\n\n### Installation\n\nAdd the plugin to your `settings.gradle.kts` (recommended) or `build.gradle.kts`:\n\n```kotlin\npluginManagement {\n    repositories {\n        mavenCentral()\n        gradlePluginPortal()\n    }\n}\n\nplugins {\n    id(\"com.davils.kreate\") version \"\u003clatest\u003e\"\n}\n```\n\n### Configuration\n\nApply the plugin in your `build.gradle.kts`:\n\n```kotlin\nkreate {\n    platform {\n        javaVersion = JavaVersion.VERSION_25\n        explicitApi = true\n        \n        jvm {\n            jni {\n                enabled = true\n                // Optional: projectDirectory = file(\"custom-jni-path\")\n            }\n        }\n        \n        multiplatform {\n            cInterop {\n                enabled = true\n                rustTargets = listOf(\"x86_64-unknown-linux-gnu\", \"aarch64-apple-darwin\")\n            }\n        }\n    }\n\n    project {\n        name = \"MyProject\"\n        description = \"A project powered by Kreate\"\n        \n        publish {\n            enabled = true\n            repositories {\n                mavenCentral {\n                    enabled = true\n                    automaticRelease = true\n                }\n            }\n        }\n    }\n}\n```\n\n---\n\n## ⚙️ Configuration Reference\n\n| Block      | Property              | Description                               | Default      |\n|:-----------|:----------------------|:------------------------------------------|:-------------|\n| `platform` | `javaVersion`         | Target Java version (21, 25, etc.)        | `VERSION_21` |\n| `platform` | `explicitApi`         | Enforces Kotlin Explicit API mode         | `false`      |\n| `platform` | `allWarningsAsErrors` | Treats all compiler warnings as errors    | `true`       |\n| `jvm.jni`  | `enabled`             | Enables JNI support (CMake-based)         | `false`      |\n| `project`  | `buildConstant`       | Generate type-safe Kotlin constants       | `Disabled`   |\n| `project`  | `docs`                | Configure Dokka documentation generation  | `Disabled`   |\n| `project`  | `tests`               | Advanced Kotest configuration \u0026 reporting | `Enabled`    |\n| `project`  | `publish`             | Maven Central / GitLab publishing setup   | `Disabled`   |\n\n---\n\n## 📦 Third-Party Software\n\nKreate leverages various open-source technologies. For a full list of libraries and licenses, please refer to the [Third-Party Software](./THIRDPARTY.md) document.\n\n---\n\n## 🤝 Contributing\n\nWe welcome all contributions! To maintain quality, please note:\n\n- **Documentation**: Changes to API or behavior must be documented.\n- **Tests**: Ensure your changes are covered by tests.\n- **Standards**: Follow the established Kotlin style and project conventions.\n\nDetailed instructions can be found in our [Contributing Guidelines](CONTRIBUTING.md).\n\n---\n\n## ⚖️ License \u0026 Ethics\n\n- **License**: Published under the **Apache License 2.0**. See `LICENSE` for details.\n- **Code of Conduct**: We adhere to our [Code of Conduct](CODE_OF_CONDUCT.md).\n\n---\n\n\u003cp align=\"center\"\u003e\n  Maintained by \u003ca href=\"https://github.com/davils-com\"\u003e\u003cb\u003eDavils\u003c/b\u003e\u003c/a\u003e\n\u003c/p\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdavils-com%2Fkreate","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdavils-com%2Fkreate","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdavils-com%2Fkreate/lists"}