{"id":27004206,"url":"https://github.com/mori-atsushi/katalog","last_synced_at":"2026-01-11T17:35:41.820Z","repository":{"id":43104857,"uuid":"379268780","full_name":"mori-atsushi/katalog","owner":"mori-atsushi","description":"A UI Catalog Library made with Jetpack Compose","archived":false,"fork":false,"pushed_at":"2025-12-03T22:10:44.000Z","size":3359,"stargazers_count":162,"open_issues_count":14,"forks_count":10,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-12-07T04:17:11.304Z","etag":null,"topics":["android","jetpack-compose","kotlin"],"latest_commit_sha":null,"homepage":"https://mori-atsushi.github.io/katalog","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/mori-atsushi.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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2021-06-22T12:52:59.000Z","updated_at":"2025-10-15T00:26:08.000Z","dependencies_parsed_at":"2023-10-05T02:43:19.877Z","dependency_job_id":"42ee7962-4000-489a-8c3b-fbee654428d5","html_url":"https://github.com/mori-atsushi/katalog","commit_stats":null,"previous_names":["cyberagent-zemi/katalog"],"tags_count":11,"template":false,"template_full_name":null,"purl":"pkg:github/mori-atsushi/katalog","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mori-atsushi%2Fkatalog","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mori-atsushi%2Fkatalog/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mori-atsushi%2Fkatalog/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mori-atsushi%2Fkatalog/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mori-atsushi","download_url":"https://codeload.github.com/mori-atsushi/katalog/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mori-atsushi%2Fkatalog/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28315879,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-11T14:58:17.114Z","status":"ssl_error","status_checked_at":"2026-01-11T14:55:53.580Z","response_time":60,"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":["android","jetpack-compose","kotlin"],"created_at":"2025-04-04T06:15:24.474Z","updated_at":"2026-01-11T17:35:41.805Z","avatar_url":"https://github.com/mori-atsushi.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cimg src=\"./docs/static/img/logo-clip.svg\" width=\"84px\"/\u003e\n\n# Katalog\n\nA UI Catalog Library made with Jetpack Compose\n\n\u003cbr /\u003e\n\n\u003cimg src=\"./docs/static/img/header-img.png\" width=\"320px\" align=\"right\" /\u003e\n\n## Features\n\n* It is made with  [Jetpack Compose](https://developer.android.com/jetpack/compose) and you can preview Composable.\n* You can easily register and group UI components using the `DSL`.\n* It supports [Android View](https://developer.android.com/reference/android/view/View), [DataBinding](https://developer.android.com/topic/libraries/data-binding), [ViewBinding](https://developer.android.com/topic/libraries/view-binding) and [Fragment](https://developer.android.com/guide/components/fragments).\n\n\u003cbr clear=\"all\" /\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\n⚠ Migration to 1.2.0\n\u003c/summary\u003e\n\nPlease update the dependency from `jp.co.cyberagent.katalog` to `com.moriatsushi.katalog` as follows.\n\n```diff\ndependencies {\n-    implementation(\"jp.co.cyberagent.katalog:katalog:1.0.2\")\n+    implementation(\"com.moriatsushi.katalog:katalog:1.2.0\")\n}\n```\n\nAlso, please fix the imports from `jp.co.cyberagent.katalog` to `com.moriatsushi.katalog` as follows.\n\n```diff\npackage com.moriatsushi.katalog.androidsample\n\nimport android.app.Application\n- import jp.co.cyberagent.katalog.registerKatalog\n+ import com.moriatsushi.katalog.registerKatalog\n\nclass SampleApp : Application() {\n    override fun onCreate() {\n        super.onCreate()\n        registerKatalog(\n            title = \"My App Catalog\",\n        ) {\n            compose(\"UI Component\") {\n                Text(text = \"Hello, World\")\n            }\n        }\n    }\n}\n```\n\n\u003c/details\u003e\n\n## Getting Started\n### step1: Add the dependency\n\nAdd Maven Central repository to your `build.gradle`.\n\n```kotlin\nrepositories {\n    mavenCentral()\n}\n```\n\nAdd the package dependencies to your `build.gradle`.\n\n```kotlin\ndependencies {\n    implementation(\"com.moriatsushi.katalog:katalog:1.2.2\")\n}\n```\n\n### step2: Register the UI component\n\nJust run the `registerKatalog` function in your application.\nTo register a `Composable`, use the `compose` function.\n\n```kotlin\nclass MyApplication : Application() {\n    override fun onCreate() {\n        super.onCreate()\n\n        registerKatalog(\n            title = \"My App Catalog\"\n        ) {\n            compose(\"UI Component\") {\n                Text(text = \"Hello, World\")\n            }\n        }\n    }\n}\n```\n\nYou can use the `group` function to group components.\n\n```kotlin\nregisterKatalog(\n    title = \"My App Catalog\"\n) {\n    group(\"Group 1\") {\n        compose(\"UI Component\") {\n            /* ... */\n        }\n    }\n\n    group(\"Group 2\") {\n        /* ... */\n    }\n}\n```\n\nThe `group` can also be assigned to a variable.\n\n```kotlin\nval group1 = group(\"Group 1\") {\n    /* ... */\n}\nval group2 = group(\"Group 2\") {\n    /* ... */\n}\nregisterKatalog {\n    title = \"My App Catalog\"\n    group(group1, group2)\n}\n```\n\n### step3: Start Catalog Activity\n\nStart `KatalogActivity` from your debug menu.\n\n```kotlin\nKatalogActivity.start(activity)\n```\n\n### You want to know more?\nPlease check the [Full Documents](https://mori-atsushi.github.io/katalog).\n\n## Ideas\n* Search function.\n* Combine with Screenshot Test.\n* Provide some Addons.\n* Support [Compose Multiplatform](https://www.jetbrains.com/lp/compose-mpp).\n\n## License\n```\nCopyright 2021 CybeAgent, Inc.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n   http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmori-atsushi%2Fkatalog","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmori-atsushi%2Fkatalog","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmori-atsushi%2Fkatalog/lists"}