{"id":17810310,"url":"https://github.com/jarroyoesp/composemultiplatformapp","last_synced_at":"2026-02-10T10:07:12.352Z","repository":{"id":64101512,"uuid":"550892613","full_name":"jarroyoesp/ComposeMultiplatformApp","owner":"jarroyoesp","description":"Compose Multiplatform Sample (KMP) that serves as a comprehensive example demonstrating the integration of Compose Multiplatform, GraphQL data consumption, and SQLDelight for local data persistence. ","archived":false,"fork":false,"pushed_at":"2025-06-25T15:24:56.000Z","size":41404,"stargazers_count":31,"open_issues_count":1,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-06-25T16:42:59.810Z","etag":null,"topics":["android","apollo-client","compose-multiplatform","desktop","ios","koin","kotlin","kotlinmultiplatform","precompose","sqldelight"],"latest_commit_sha":null,"homepage":"","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jarroyoesp.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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}},"created_at":"2022-10-13T13:51:40.000Z","updated_at":"2025-06-25T15:24:57.000Z","dependencies_parsed_at":"2024-10-27T16:08:58.148Z","dependency_job_id":"5e58e8af-a496-48d2-a355-2eb980f5674d","html_url":"https://github.com/jarroyoesp/ComposeMultiplatformApp","commit_stats":null,"previous_names":["jarroyoesp/composemultiplatformapp"],"tags_count":12,"template":false,"template_full_name":null,"purl":"pkg:github/jarroyoesp/ComposeMultiplatformApp","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jarroyoesp%2FComposeMultiplatformApp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jarroyoesp%2FComposeMultiplatformApp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jarroyoesp%2FComposeMultiplatformApp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jarroyoesp%2FComposeMultiplatformApp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jarroyoesp","download_url":"https://codeload.github.com/jarroyoesp/ComposeMultiplatformApp/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jarroyoesp%2FComposeMultiplatformApp/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":262639147,"owners_count":23341432,"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","apollo-client","compose-multiplatform","desktop","ios","koin","kotlin","kotlinmultiplatform","precompose","sqldelight"],"created_at":"2024-10-27T15:31:50.363Z","updated_at":"2026-02-10T10:07:12.346Z","avatar_url":"https://github.com/jarroyoesp.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![CI-MASTER](https://github.com/jarroyoesp/ComposeMultiplatformApp/actions/workflows/ci.yml/badge.svg?branch=master)](https://github.com/jarroyoesp/ComposeMultiplatformApp/actions/workflows/ci.yml)\n[![Latest release](https://img.shields.io/github/v/release/JetBrains/compose-multiplatform?color=blue\u0026label=Compose%20multiplatform)](https://github.com/JetBrains/compose-multiplatform/releases/tag/v1.9.3)\n![Kotlin Version](https://img.shields.io/badge/Kotlin-2.2.21-blue?logo=kotlin\u0026logoColor=white)\n\u003cdiv align=\"center\"\u003e\n    \u003cimg alt=\"Compose multiplatform charts\" src=\"./screenshots/compose_multiplatform_logo.png\"/\u003e\n    \u003ch1\u003e🚀 Example project to show SpaceX data built with Kotlin Multiplatform and Compose UI Multiplatform\u003c/h1\u003e\n\u003c/div\u003e\n\n[Compose Multiplatform](https://www.jetbrains.com/lp/compose-multiplatform/) Sample (KMP) that serves as a comprehensive example demonstrating the integration of Compose Multiplatform, GraphQL data consumption, and SQLDelight for local data persistence.\n\nUsing data from the GraphQL endpoint [SpaceX-GraphQL](https://studio.apollographql.com/public/SpaceX-pxxbxen/variant/current/explorer)\n\nCurrent supported Platforms are:\n1. Android\n2. Desktop\n3. iOS\n\n\u003cimg width=\"800\" src=\"./screenshots/summary.png\" /\u003e\n\n# Features\n\n## Home Screen 🚀\n- List of SpaceX launches: Displays a list of SpaceX launches retrieved from a GraphQL endpoint.\n- Show favorite Launches: retrieve data from local database to show your favorite launches\n- Apollo GraphQL Integration: Utilizes GraphQL to fetch and display SpaceX launch data efficiently.\n- SQLDelight Integration: Integrates SQLDelight for managing and persisting favorite launch data.\n- Responsive UI: Provides a responsive user interface for seamless navigation and interaction across devices.\n- Error Handling: Provides informative error messages and graceful handling of network and database errors.\n\n## Detail Screen 🛸\n\n- Detailed View: Navigate to a detailed view of each launch for more information.\n- Save Favorites: Enables users to save their favorite launches to a SQLDelight database for persistence.\n\n## Built With 🛠\n\n- [Kotlin Multiplatform](https://github.com/JetBrains/compose-multiplatform)\n- [Compose Multiplatform](https://github.com/JetBrains/compose-multiplatform): Enables cross-platform UI development with JetBrains' Compose framework.\n- [Koin - DI](https://github.com/InsertKoinIO/koin): Dependency injection framework for Kotlin Multiplatform\n- [Kotlin Coroutines](https://github.com/Kotlin/kotlinx.coroutines): Provides asynchronous programming utilities in Kotlin.\n- [SQLDelight](https://github.com/cashapp/sqldelight): Generates Kotlin APIs from SQL statements for safer database interactions.\n- [Apollo GraphQL](https://github.com/apollographql): Offers client-side tools for consuming GraphQL APIs.\n- [Kotlin Multiplatform Navigation](https://www.jetbrains.com/help/kotlin-multiplatform-dev/compose-navigation-routing.html): Provides navigation components for Kotlin Multiplatform projects using Compose.\n- [Kotlin Multiplatform ViewModel](https://www.jetbrains.com/help/kotlin-multiplatform-dev/compose-viewmodel.html): Manages UI-related data and state in Kotlin Multiplatform projects using Compose.\n- [ConstraintLayout Multiplatform](https://github.com/Lavmee/constraintlayout-compose-multiplatform): Brings ConstraintLayout functionality to Kotlin Multiplatform projects with Compose.\n- [Coil](https://coil-kt.github.io/coil/): Efficient image loading library for Compose multiplatform projects.\n- [Logger](https://github.com/touchlab/Kermit): Logging library for Kotlin Multiplatform projects.\n- [Unit Tests](https://github.com/junit-team/junit5): Automated tests to verify the behavior of individual code units.\n\n## Android 🤖\n\n| \u003cimg width=\"240\" src=\"./screenshots/android/home.png\" /\u003e    | \u003cimg width=\"240\" src=\"./screenshots/android/detail.png\" /\u003e   | \u003cimg width=\"240\" src=\"./screenshots/android/loading.png\" /\u003e   |\n|-------------------------------------------------------------|--------------------------------------------------------------|---------------------------------------------------------------|\n| \u003cimg width=\"240\" src=\"./screenshots/android/graph.png\" /\u003e   |                                                              |                                                               |\n\n## Desktop 🖥️\n\nTo execute the Desktop app run this `gradle` command:\n\n```\n./gradlew desktop:run\n```\n\n| \u003cimg width=\"240\" src=\"./screenshots/desktop/home.png\" /\u003e    | \u003cimg width=\"240\" src=\"./screenshots/desktop/detail.png\" /\u003e   | \u003cimg width=\"240\" src=\"./screenshots/desktop/loading.png\" /\u003e   |\n|-------------------------------------------------------------|--------------------------------------------------------------|---------------------------------------------------------------|\n| \u003cimg width=\"240\" src=\"./screenshots/desktop/graph.png\" /\u003e   |                                                              |                                                               |\n\n## iOS 🍎\nSteps to setup your iOS app:\n1. Create your iosApp using XCode\n2. Add to your `Build phases`\n\n```\ncd \"$SRCROOT/..\"\n./gradlew :modules:feature-home-shared:embedAndSignAppleFrameworkForXcode\n```\n\n\u003cimg width=\"800\" src=\"./screenshots/ios/buildPhases.png\" /\u003e\n\n3. Add to Search Paths:\n```\n$(SRCROOT)/../modules/feature-home-shared/build/xcode-frameworks/$(CONFIGURATION)/$(SDK_NAME)\n```\n\nMore details [JetBrains official documentation](https://www.jetbrains.com/help/kotlin-multiplatform-dev/multiplatform-integrate-in-existing-app.html#make-your-cross-platform-application-work-on-ios)\n\n| \u003cimg width=\"240\" src=\"./screenshots/ios/home.png\" /\u003e        | \u003cimg width=\"240\" src=\"./screenshots/ios/detail.png\" /\u003e       | \u003cimg width=\"240\" src=\"./screenshots/ios/loading.png\" /\u003e       |\n|-------------------------------------------------------------|--------------------------------------------------------------|---------------------------------------------------------------|\n| \u003cimg width=\"240\" src=\"./screenshots/ios/graph.png\" /\u003e       |                                                              |                                                               |\n\n\n### Get the latest version of the GraphQL schema\n```bash\n./gradlew :module:library-network-api:downloadApolloSchemaFromIntrospection\n```\n\n## Contributing 🤝\n\nIssues or Pull request for any bugs/improvements are well received\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjarroyoesp%2Fcomposemultiplatformapp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjarroyoesp%2Fcomposemultiplatformapp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjarroyoesp%2Fcomposemultiplatformapp/lists"}