{"id":22192578,"url":"https://github.com/3sidedcube/android-fusion-core","last_synced_at":"2025-03-24T20:45:48.124Z","repository":{"id":40485711,"uuid":"465637089","full_name":"3sidedcube/Android-Fusion-Core","owner":"3sidedcube","description":"Flexible JSON driven UI rendering for Android","archived":false,"fork":false,"pushed_at":"2023-06-16T12:06:21.000Z","size":292,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":8,"default_branch":"main","last_synced_at":"2025-01-30T01:22:46.794Z","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-03T08:45:26.000Z","updated_at":"2022-03-03T12:19:41.000Z","dependencies_parsed_at":"2024-12-02T12:40:03.028Z","dependency_job_id":null,"html_url":"https://github.com/3sidedcube/Android-Fusion-Core","commit_stats":null,"previous_names":[],"tags_count":12,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/3sidedcube%2FAndroid-Fusion-Core","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/3sidedcube%2FAndroid-Fusion-Core/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/3sidedcube%2FAndroid-Fusion-Core/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/3sidedcube%2FAndroid-Fusion-Core/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/3sidedcube","download_url":"https://codeload.github.com/3sidedcube/Android-Fusion-Core/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.052Z","updated_at":"2025-03-24T20:45:48.102Z","avatar_url":"https://github.com/3sidedcube.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Android-Fusion-Core\n## Fusion library for Android: Core 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 Core module for?\nThe Core module contains all of the basic models defined in the Fusion JSON schema, as well as some utility methods and constants.\nIt also contains interfaces that are used by inheriting modules to define the way in which they interact.\nThis allows a separation of concerns so that Fusion components can be swapped out when necessary.\n\nThe Core module repo also currently contains the modules for display population.\nThe Display Populator is responsible for transforming a link to a single page of Fusion data into a complete Java object representation of that page.\nThe `legacy` implementation utilises [Retrofit](https://square.github.io/retrofit/) and [Gson](https://github.com/google/gson) to fetch pages from an API.\nThe `coroutine-source-cache` implementation utilises Kotlin's coroutines to fetch pages from data sources.\nThe `retrofit` implementation extends `coroutine-source-cache` to use [Retrofit](https://square.github.io/retrofit/) to fetch pages from an API.\nNote that the `retrofit` module depends on `coroutine-source-cache`, and therefore if using it, you may need to install both in order to build correctly.\n\n## Installation\n[JitPack](https://jitpack.io/) is used to provide the Fusion artifacts.\nIn order to utilise the core 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, add the following dependency to your `build.gradle` file:\n```groovy\n    implementation 'com.github.3sidedcube.Android-Fusion-Core:core:{versionCode}'\n```\nTo utilise a populator module, add the following dependency:\n```groovy\n    implementation 'com.github.3sidedcube.Android-Fusion-Core:populator-{populatorName}:{versionCode}'\n```\ne.g\n```groovy\n    implementation 'com.github.3sidedcube.Android-Fusion-Core:populator-coroutine-source-cache:{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-Core:{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\nDemo apps for the usage of Fusion can be found in the other relevant modules.\nFor example, the [Android UI Module](https://github.com/3sidedcube/Android-Fusion-AndroidUi) contains a demo application.\n\n## Custom behaviour\nInformation on the creation of custom models, actions, and more can be found at the Wiki.\n\n## FAQ\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-core","html_url":"https://awesome.ecosyste.ms/projects/github.com%2F3sidedcube%2Fandroid-fusion-core","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F3sidedcube%2Fandroid-fusion-core/lists"}