{"id":14975971,"url":"https://github.com/joreilly/confetti","last_synced_at":"2025-05-14T20:10:53.461Z","repository":{"id":37033092,"uuid":"436024503","full_name":"joreilly/Confetti","owner":"joreilly","description":"KMP/CMP GraphQL based conference project with Jetpack Compose Android, Compose for Wear, and Compose Multiplatform Desktop, Web and iOS clients along with GraphQL backend.","archived":false,"fork":false,"pushed_at":"2025-05-06T18:05:14.000Z","size":61080,"stargazers_count":913,"open_issues_count":49,"forks_count":106,"subscribers_count":12,"default_branch":"main","last_synced_at":"2025-05-10T02:58:51.524Z","etag":null,"topics":["android","apollo","apollo-client","compose-desktop","compose-ios","compose-multiplatform","graphql","graphql-client","graphql-server","jetpack","jetpack-compose","kmm","kmp","kotlin","kotlin-multiplatform","kotlin-multiplatform-mobile","kotlin-native","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":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/joreilly.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","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}},"created_at":"2021-12-07T20:59:41.000Z","updated_at":"2025-05-06T18:05:16.000Z","dependencies_parsed_at":"2025-02-28T12:06:28.128Z","dependency_job_id":"f0a78229-3976-45f7-8378-4be63f01da84","html_url":"https://github.com/joreilly/Confetti","commit_stats":{"total_commits":1768,"total_committers":59,"mean_commits":"29.966101694915253","dds":0.7850678733031674,"last_synced_commit":"d43e98fa3cd6eee949c3a0e57cf35d76dc49f083"},"previous_names":[],"tags_count":21,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joreilly%2FConfetti","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joreilly%2FConfetti/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joreilly%2FConfetti/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joreilly%2FConfetti/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/joreilly","download_url":"https://codeload.github.com/joreilly/Confetti/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254219374,"owners_count":22034397,"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","apollo-client","compose-desktop","compose-ios","compose-multiplatform","graphql","graphql-client","graphql-server","jetpack","jetpack-compose","kmm","kmp","kotlin","kotlin-multiplatform","kotlin-multiplatform-mobile","kotlin-native","swift","swiftui"],"created_at":"2024-09-24T13:53:02.620Z","updated_at":"2025-05-14T20:10:48.451Z","avatar_url":"https://github.com/joreilly.png","language":"Kotlin","readme":"# Confetti 🎊\n\n![kotlin-version](https://img.shields.io/badge/kotlin-2.1.0-blue?logo=kotlin)\n\n[\u003cimg src=\"https://upload.wikimedia.org/wikipedia/commons/7/78/Google_Play_Store_badge_EN.svg\"\nalt=\"Get it on Google Play Store\"\nheight=\"80\"\u003e](https://play.google.com/store/apps/details?id=dev.johnoreilly.confetti)\n[\u003cimg src=\"https://developer.apple.com/assets/elements/badges/download-on-the-app-store.svg\"\nalt=\"Get it on App Store\"\nheight=\"80\"\u003e](https://apps.apple.com/us/app/confetti/id1660211390)\n\nKotlin/Compose Multiplatform GraphQL project (backend and clients) to allow viewing of conference information for a range of conferences.\n\nIncludes:\n\n- Compose Multiplatform (CMP) clients (Android, Desktop and Web)\n- Compose for Wear OS client (contributed by https://github.com/yschimke)\n- Android Auto and Automotive OS (contributed by https://github.com/cmota)\n- [Apollo GraphQL](https://github.com/apollographql/apollo-kotlin) based Kotlin Multiplatform shared\n  code\n- GraphQL backend\n\n### Contributors\n\n\u003ca href=\"https://github.com/joreilly/confetti/graphs/contributors\"\u003e\n  \u003cimg src=\"https://contrib.rocks/image?repo=joreilly/confetti\" /\u003e\n\u003c/a\u003e\n\n### Related posts\n\n* [Swift/Kotlin ViewModel alignment in a Kotlin Multiplatform project](https://johnoreilly.dev/posts/swift-kotlin-viewmodel-kmm-comparison/)\n* [Using KMM-ViewModel library to share VM between iOS and Android](https://johnoreilly.dev/posts/kmm-viewmodel/)\n* [Consuming Compose for iOS in a SwiftUI application](https://johnoreilly.dev/posts/swiftui-compose-ios/)\n\n### Building\n\nUse Android Studio/IntelliJ to build/run Android client.\nRequires Xcode 14 or later for iOS client.\n\n### Screenshots\n\n\n\u003cimg width=\"434\" alt=\"Screenshot 2024-11-30 at 18 48 39\" src=\"https://github.com/user-attachments/assets/7d63470b-1965-4d67-940f-0ab1791d52a2\"\u003e\n\n\n\n![Tablet Screenshot of Confetti](https://user-images.githubusercontent.com/6302/227476725-edd577f5-2abd-4660-a777-decef84fbb9b.png)\n\n\n\u003cimg width=\"500\" alt=\"Wear Screenshots of Confetti screens\" src=\"https://raw.githubusercontent.com/joreilly/Confetti/aaa91c53098754de5c568ec6611b7ab237d23bcb/wearApp/images/wearScreenshots.png\"\u003e\n\n\u003cimg width=\"1356\" alt=\"Screenshot 2024-03-30 at 19 46 48\" src=\"https://github.com/joreilly/Confetti/assets/6302/0777a9d9-e620-4feb-9e28-a00f01978c1c\"\u003e\n\n\u003cimg src=\"androidApp/snapshot/walkthroughAndroidAuto.gif\" alt=\"Walkthrough of Confetti running on Android Auto\" /\u003e\n\n\u003cimg src=\"automotiveApp/snapshot/walkthroughAndroidAutomotive.gif\" alt=\"Walkthrough of Confetti running on Android Automotive\" /\u003e\n\n\n### Gemini functionality\n\nGemini based talk recommendations for particuar conference are included in the mobile clients (if `gemini_api_key` configured in `local.properties`).  Desktop client allows free entry of query.\n\n\u003cimg width=\"1033\" alt=\"Screenshot 2024-02-25 at 09 58 16\" src=\"https://github.com/joreilly/Confetti/assets/6302/ac624a44-4b0b-4a1d-b58b-4ce172b6f3cd\"\u003e\n\n\n### API\n\nThe API is available at https://confetti-app.dev/graphql ([IDE](https://confetti-app.dev/playground)).\nYou can query the list of conferences with `conferences.id` and chose what conference to query by\npassing a `\"conference\"` HTTP header \n\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjoreilly%2Fconfetti","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjoreilly%2Fconfetti","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjoreilly%2Fconfetti/lists"}