{"id":22192581,"url":"https://github.com/3sidedcube/android-fusion-androidui","last_synced_at":"2025-03-24T20:45:47.462Z","repository":{"id":39889139,"uuid":"465729737","full_name":"3sidedcube/Android-Fusion-AndroidUi","owner":"3sidedcube","description":"Fusion: Flexible JSON driven UI rendering","archived":false,"fork":false,"pushed_at":"2023-06-16T13:44:54.000Z","size":301,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":8,"default_branch":"main","last_synced_at":"2025-01-30T01:22:48.171Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"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/3sidedcube.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"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}},"created_at":"2022-03-03T13:26:47.000Z","updated_at":"2023-09-27T06:30:05.000Z","dependencies_parsed_at":"2024-12-02T12:40:01.018Z","dependency_job_id":null,"html_url":"https://github.com/3sidedcube/Android-Fusion-AndroidUi","commit_stats":null,"previous_names":[],"tags_count":11,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/3sidedcube%2FAndroid-Fusion-AndroidUi","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/3sidedcube%2FAndroid-Fusion-AndroidUi/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/3sidedcube%2FAndroid-Fusion-AndroidUi/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/3sidedcube%2FAndroid-Fusion-AndroidUi/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/3sidedcube","download_url":"https://codeload.github.com/3sidedcube/Android-Fusion-AndroidUi/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245351757,"owners_count":20601090,"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":[],"created_at":"2024-12-02T12:26:38.565Z","updated_at":"2025-03-24T20:45:47.432Z","avatar_url":"https://github.com/3sidedcube.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Android-Fusion-AndroidUi\n## Fusion library for Android: AndroidUi module\nFusion: Flexible JSON driven UI rendering\n\n### What is Fusion?\nFusion is a library designed to take JSON data representing UI, and render that data into the described UI.\nThe JSON data must match the Fusion JSON schema in order to render correctly.\nThis is part of the Fusion library for Android - there also exists a [Fusion library for iOS](https://github.com/3sidedcube/Fusion), so that Fusion can be used to build cross-platform UI.\n\n### What is the AndroidUi module for?\nThe AndroidUi module provides implementations for all of the Fusion views using the native Android RecyclerView ViewHolder pattern.\nIt also provides Fragment and Activity abstract classes / implementations for easily including Fusion content in your app.\nFinally, a demo app is included, to demonstrate how a Fusion app could be set up.\n\n## Installation\n[JitPack](https://jitpack.io/) is used to provide the Fusion artifacts.\nIn order to utilise the library in a project, update your `settings.gradle` (or root project `build.gradle` on older projects) to include the Jitpack maven repository:\n```groovy\n    repositories {\n        ...\n        maven { url 'https://jitpack.io' }\n    }\n```\nThen, in order to utilise the core AndroidUi module in a project, add the following dependency to your `build.gradle` file:\n```groovy\n    implementation 'com.github.3sidedcube.Android-Fusion-AndroidUi:core:{versionCode}'\n```\nTo utilise the Fragment module, add the following dependency:\n```groovy\n    implementation 'com.github.3sidedcube.Android-Fusion-AndroidUi:fragment:{versionCode}'\n```\nTo utilise the Activity module, add the following dependency:\n```groovy\n    implementation 'com.github.3sidedcube.Android-Fusion-AndroidUi:activity:{versionCode}'\n```\nIf you wish to utilise all modules in this repo, you can alternatively add the following dependency:\n```groovy\n    implementation 'com.github.3sidedcube:Android-Fusion-AndroidUi:{versionCode}'\n```\nAs these builds are provided using Jitpack, `{versionCode}` can be replaced with:\n\n- A specific commit, e.g `1a2b3c4d5e`\n- A specific branch's latest build, e.g `feature~jitpack-setup-SNAPSHOT`\n- A specific pre-release tag, e.g `1.0.0-rc1`\n- A specific release tag, e.g `1.0.0`\n\nIt is recommended that you use this library at a specific release tag, to ensure that the library is in a stable state.\n\n## Usage\nSee the demo app to get an impression of the behaviour, or see the Wiki.\nIn order to run the demo app, you will need to update the constants `DEMO_URL` and `START_SCREEN` in `MainActivity.kt` to point to your JSON data source / API.\n\n## FAQ\n### Why is this module named \"AndroidUi\" rather than simply \"Ui\"?\nWhilst this day may never come, we foresee a future Jetpack Compose (or some other UI framework) may become production ready.\nIf this happens, Fusion UI libraries for the alternative UI frameworks may be built.\nTherefore, this module is named \"AndroidUi\" to denote that it is using Android's native View / RecyclerView frameworks.\n\n### What motivated the name \"Fusion\"?\nFusion here means to bring together two platforms, iOS and Android, powered by a single server-side API.\nFor web-server apps, the business logic should sit server-side as much as possible. Fusion aims to be as simple as \"server tell me what to draw and I'll draw it\".\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F3sidedcube%2Fandroid-fusion-androidui","html_url":"https://awesome.ecosyste.ms/projects/github.com%2F3sidedcube%2Fandroid-fusion-androidui","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F3sidedcube%2Fandroid-fusion-androidui/lists"}