{"id":13605423,"url":"https://github.com/CodandoTV/CraftD","last_synced_at":"2025-04-12T05:33:07.144Z","repository":{"id":234601637,"uuid":"788958834","full_name":"CodandoTV/CraftD","owner":"CodandoTV","description":"A Server Driven UI library","archived":false,"fork":false,"pushed_at":"2025-02-24T00:09:17.000Z","size":777,"stargazers_count":37,"open_issues_count":3,"forks_count":1,"subscribers_count":6,"default_branch":"main","last_synced_at":"2025-03-18T15:23:40.887Z","etag":null,"topics":["android","flutter","jetpack-compose","server-driven-ui","swift","swiftui"],"latest_commit_sha":null,"homepage":"https://codandotv.gitbook.io/craftd","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/CodandoTV.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-04-19T12:28:00.000Z","updated_at":"2025-02-28T12:30:29.000Z","dependencies_parsed_at":"2024-05-18T02:26:34.336Z","dependency_job_id":"3bfb79ca-8a3a-46ba-a6ec-695668b8a7b3","html_url":"https://github.com/CodandoTV/CraftD","commit_stats":null,"previous_names":["codandotv/craftd-android","codandotv/craftd"],"tags_count":8,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CodandoTV%2FCraftD","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CodandoTV%2FCraftD/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CodandoTV%2FCraftD/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CodandoTV%2FCraftD/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/CodandoTV","download_url":"https://codeload.github.com/CodandoTV/CraftD/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248524277,"owners_count":21118610,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["android","flutter","jetpack-compose","server-driven-ui","swift","swiftui"],"created_at":"2024-08-01T19:00:58.533Z","updated_at":"2025-04-12T05:33:06.604Z","avatar_url":"https://github.com/CodandoTV.png","language":"Kotlin","funding_links":[],"categories":["Libraries","Kotlin"],"sub_categories":["🍎 Compose UI"],"readme":"[![Android API](https://img.shields.io/badge/api-21%2B-brightgreen.svg?style=for-the-badge)](https://android-arsenal.com/api?level=21)\n[![kotlin](https://img.shields.io/github/languages/top/codandotv/craftd.svg?style=for-the-badge\u0026color=blueviolet)](https://kotlinlang.org/)\n[![License MIT](https://img.shields.io/github/license/codandotv/craftd.svg?style=for-the-badge\u0026color=orange)](https://opensource.org/licenses/MIT)\n\n\n\u003ch1 align=\"center\"\u003e\n    \u003cimg height=\"150\" src=\"https://github.com/user-attachments/assets/6893bd0d-7866-44b0-bc34-5c3759c1bacf\"/\u003e\n    \u003cbr\u003e\n    \u003ca href=\"https://codandotv.gitbook.io/craftd\"\u003eCraftD\u003c/a\u003e: A framework to implement Server-Driven UI quickly and easily to Android / iOS / Flutter / Kmp\n\u003c/h1\u003e\n\n### Documentation\nSee the [project website](https://codandotv.gitbook.io/craftd) for documentation.\n\nTake a look at [CraftD: Server Driven UI for All Platforms](https://medium.com/codandotv/craftd-server-driven-ui-for-all-platforms-b2624d2c2a7b)\n\n\n## Features\n### 🔗 Compatibility\n\n| Tech                            |      Support         |\n|---------------------------------|:--------------------:|\n| View System - Android           |  ✅ **Supported**    |\n| Jetpack Compose - Android       |  ✅ **Supported**    |\n| Widget - Flutter                |  ✅ **Supported**    |\n| SwiftUi - iOS                   |  ✅ **Supported**    |\n| Jetpack Compose - Multiplatform |  ⚒️ **In Progress**   |\n\n### Components that already exist in the library\n\n| Component | Compose | View System | Widget | SwiftUI |\n|-----------|----------|----------|----------|----------|\n| Button    |    X    |      X      |    X   |    X    |\n| Text      |    X    |      X      |    X   |    X    |\n| CheckBox  |    X    |      -      |    -   |    X    |\n\n### Create your custom component( android compose example )\n\n```kotlin\n@JsonIgnoreProperties(ignoreUnknown = true)\n@Immutable\n@Stable\ndata class CheckBoxProperties(\n    @JsonProperty(\"text\") val text: String? = null,\n    ... rest of your properties\n)\n\n```\n\n#### Add your Component json object in Dymanic.json\n```json\n{\n  \"key\": \"CraftDCheckBox\",\n  \"value\": {\n    ... place your properties\n  }\n}\n\n```\n\n#### Create your Component\n```kotlin\n@Composable\nfun CraftDCheckBox(\n    checkboxProperties: CheckBoxProperties,\n    modifier: Modifier = Modifier,\n    onChecked: (Boolean) -\u003e Unit\n) {\n    ... place your code\n}\n```\n\n#### Create your Component Builder\n```kotlin\nclass CraftDCheckBoxBuilder(\n    override val key: String = CraftDComponentKey.CHECK_BOX_COMPONENT.key\n) :\n    CraftDBuilder {\n    @Composable\n    override fun craft(model: SimpleProperties, listener: CraftDViewListener) {\n        val checkBoxProperties = model.value.convertToVO\u003cCheckBoxProperties\u003e()\n        CraftDCheckBox(checkBoxProperties) {\n            checkBoxProperties.actionProperties?.let { listener.invoke(it) }\n        }\n    }\n}\n```\n\nMore details check our [documentation](https://codandotv.gitbook.io/craftd)\n\n\n### Samples\n| [Android Compose](https://github.com/CodandoTV/CraftD/tree/main/android_kmp/app-sample/src/main/java/com/github/codandotv/craftd/app_sample/presentation/compose) | [Android View System](https://github.com/CodandoTV/CraftD/tree/main/android_kmp/app-sample/src/main/java/com/github/codandotv/craftd/app_sample/presentation/xml) | [iOS SwiftUI](https://github.com/CodandoTV/CraftD/tree/main/ios/sample/CraftDSample) | [Flutter](https://github.com/CodandoTV/CraftD/tree/main/flutter/sample/lib) |\n|----------|----------|----------|----------|\n| \u003cimg src=\"https://github.com/CodandoTV/CraftD/assets/7690931/aa31d0a2-a998-402c-b2c2-4de5088ee30f\" width=\"200\" height=\"400\" /\u003e | \u003cimg src=\"https://github.com/CodandoTV/CraftD/assets/7690931/aa31d0a2-a998-402c-b2c2-4de5088ee30f\" width=\"200\" height=\"400\" /\u003e | \u003cimg src=\"https://github.com/user-attachments/assets/c8c653b2-1289-4437-85f2-f940d5135f27\" width=\"200\" height=\"400\" /\u003e | \u003cimg src=\"https://github.com/CodandoTV/CraftD/assets/7690931/dfabfda7-6501-4763-b040-3ee9fbf2a2be\" width=\"200\" height=\"400\" /\u003e |\n\n\n### Credits\n\n\u003e A Server Driven UI library for Android.\n\nInspired by the [DynamicView](https://github.com/rviannaoliveira/DynamicView/).\n\n\nThis project exists thanks to all the people who contribute.\n\u003ca href=\"https://github.com/CodandoTV/CraftD\"\u003e\u003cimg src=\"https://opencollective.com/craftd/contributors.svg?width=890\u0026button=false\" /\u003e\u003c/a\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FCodandoTV%2FCraftD","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FCodandoTV%2FCraftD","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FCodandoTV%2FCraftD/lists"}