{"id":18859902,"url":"https://github.com/kashif-e/kmmnewsapp","last_synced_at":"2025-04-06T06:09:42.185Z","repository":{"id":41068806,"uuid":"507492144","full_name":"Kashif-E/KMMNewsAPP","owner":"Kashif-E","description":"Kotlin multi platform project template and sample app with everything shared except the UI. Built with clean architecture + MVI","archived":false,"fork":false,"pushed_at":"2024-09-27T07:50:25.000Z","size":404,"stargazers_count":297,"open_issues_count":2,"forks_count":20,"subscribers_count":4,"default_branch":"NewsAPP","last_synced_at":"2025-03-27T14:12:30.271Z","etag":null,"topics":["android","androidarchitecturecomponets","coroutines","ios","jetpack-compose","kmm","koin","koin-kotlin","kotlin","kotlin-android","kotlin-multiplatform","kotlin-multiplatform-mobile","ktor-client","mvi-clean-architecture","mvi-coroutines-flow","swift","swiftui"],"latest_commit_sha":null,"homepage":"","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/Kashif-E.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-06-26T06:08:32.000Z","updated_at":"2025-03-03T21:19:37.000Z","dependencies_parsed_at":"2024-11-08T04:20:08.629Z","dependency_job_id":"0f60a1d8-f8c1-4b14-9dcc-4917ade56c50","html_url":"https://github.com/Kashif-E/KMMNewsAPP","commit_stats":null,"previous_names":[],"tags_count":8,"template":true,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kashif-E%2FKMMNewsAPP","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kashif-E%2FKMMNewsAPP/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kashif-E%2FKMMNewsAPP/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kashif-E%2FKMMNewsAPP/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Kashif-E","download_url":"https://codeload.github.com/Kashif-E/KMMNewsAPP/tar.gz/refs/heads/NewsAPP","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247441053,"owners_count":20939239,"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","androidarchitecturecomponets","coroutines","ios","jetpack-compose","kmm","koin","koin-kotlin","kotlin","kotlin-android","kotlin-multiplatform","kotlin-multiplatform-mobile","ktor-client","mvi-clean-architecture","mvi-coroutines-flow","swift","swiftui"],"created_at":"2024-11-08T04:19:39.573Z","updated_at":"2025-04-06T06:09:42.169Z","avatar_url":"https://github.com/Kashif-E.png","language":"Kotlin","funding_links":["https://www.buymeacoffee.com/kashifmehmood","https://img.buymeacoffee.com/button-api/?text=Buy"],"categories":[],"sub_categories":[],"readme":"# KMMNewsAPP\n\n\u003ca href=\"https://www.buymeacoffee.com/kashifmehmood\"\u003e\u003cimg src=\"https://img.buymeacoffee.com/button-api/?text=Buy me a coffee\u0026emoji=\u0026slug=kashifmehmood\u0026button_colour=FFDD00\u0026font_colour=000000\u0026font_family=Cookie\u0026outline_colour=000000\u0026coffee_colour=ffffff\" /\u003e\u003c/a\u003e\n\nfeatured by kotlin official: https://twitter.com/kotlin/status/1567871041866809344\n\nfeatured by Kotzilla: https://twitter.com/Kotzilla_io/status/1612433688532320259\n\nHere's a video of how it looks. You can always clone and check by yourself.\n\n[Untitled.webm](https://user-images.githubusercontent.com/61690178/197214466-5e16ea33-abcc-4ed1-81fd-a9a74fe32065.webm)\n\n## What's shared?\n\nEverything, except the UI. \n* Android UI is in Compose\n* IOS ui is in SwiftUI\n\nWhat does it have?\n\n* A complete skeleton of a kmm project that will help you follow clean architecture.\n* Dependency injection is set up using \"The Mighty KOIN\". You just have to add you dependencies.\nconnected with both ios and android.\n* Shared ViewModel with stateflow for managing states in jetpack compose and swift ui\n* Realm for local storage and caching\n* Material 3 for android UI theming\n\n\nDont forget to enable the new memory model in you gradle properties\n\n```groovy\nkotlin.native.binary.memoryModel=experimental\n```\n\n\n## News APP\n\n\nI have used newsapi.org (News Api) to build the app to demonstrate how everything should be layed out in order to build the app.\nYou can communicate with the API to get news and also use Realm to add a news to readlater an available offline.\n\n## KMM is Awesome ❤️ and continuously improving. If you found an issue or want to contribute feel free to contact 🖤\n\n```kotlin\n\noperator fun invoke() = \"KMM is Awesome\"\n\n```\n\n\n\u003cp align=\"left\"\u003e\n\u003ca href=\"https://twitter.com/kashif_mehmood_\" target=\"blank\"\u003e\u003cimg align=\"center\" src=\"https://raw.githubusercontent.com/rahuldkjain/github-profile-readme-generator/master/src/images/icons/Social/twitter.svg\" alt=\"kashif_mehmood_\" height=\"30\" width=\"40\" /\u003e\u003c/a\u003e\n\u003ca href=\"https://linkedin.com/in/kashif-mehmood\" target=\"blank\"\u003e\u003cimg align=\"center\" src=\"https://raw.githubusercontent.com/rahuldkjain/github-profile-readme-generator/master/src/images/icons/Social/linked-in-alt.svg\" alt=\"kashif-mehmood\" height=\"30\" width=\"40\" /\u003e\u003c/a\u003e\n\u003ca href=\"https://stackoverflow.com/users/kashif-mehmood\" target=\"blank\"\u003e\u003cimg align=\"center\" src=\"https://raw.githubusercontent.com/rahuldkjain/github-profile-readme-generator/master/src/images/icons/Social/stack-overflow.svg\" alt=\"kashif-mehmood\" height=\"30\" width=\"40\" /\u003e\u003c/a\u003e\n\u003ca href=\"https://fb.com/kashi.m.456\" target=\"blank\"\u003e\u003cimg align=\"center\" src=\"https://raw.githubusercontent.com/rahuldkjain/github-profile-readme-generator/master/src/images/icons/Social/facebook.svg\" alt=\"kashi.m.456\" height=\"30\" width=\"40\" /\u003e\u003c/a\u003e\n\u003ca href=\"https://instagram.com/kashif_mehmood._\" target=\"blank\"\u003e\u003cimg align=\"center\" src=\"https://raw.githubusercontent.com/rahuldkjain/github-profile-readme-generator/master/src/images/icons/Social/instagram.svg\" alt=\"kashif_mehmood._\" height=\"30\" width=\"40\" /\u003e\u003c/a\u003e\n\u003ca href=\"https://medium.com/@kashif-mehmood-km\" target=\"blank\"\u003e\u003cimg align=\"center\" src=\"https://raw.githubusercontent.com/rahuldkjain/github-profile-readme-generator/master/src/images/icons/Social/medium.svg\" alt=\"@kashif-mehmood-km\" height=\"30\" width=\"40\" /\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkashif-e%2Fkmmnewsapp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkashif-e%2Fkmmnewsapp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkashif-e%2Fkmmnewsapp/lists"}