{"id":13610180,"url":"https://github.com/j-roskopf/SyncSphere","last_synced_at":"2025-04-12T22:33:15.830Z","repository":{"id":204911619,"uuid":"712951839","full_name":"j-roskopf/SyncSphere","owner":"j-roskopf","description":"Sync Sphere - Compose multiplatform project targeting iOS, Android, and Desktop for planning get togethers with friends","archived":false,"fork":false,"pushed_at":"2024-11-07T12:54:11.000Z","size":23461,"stargazers_count":9,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-11-07T13:49:16.895Z","etag":null,"topics":["sphere","sync","sync-sphere"],"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/j-roskopf.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":"2023-11-01T14:40:46.000Z","updated_at":"2024-11-07T12:54:16.000Z","dependencies_parsed_at":"2024-08-01T19:43:58.633Z","dependency_job_id":"81aa0687-3a43-4fce-b109-4b95cdaff22c","html_url":"https://github.com/j-roskopf/SyncSphere","commit_stats":null,"previous_names":["j-roskopf/syncsphere"],"tags_count":19,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/j-roskopf%2FSyncSphere","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/j-roskopf%2FSyncSphere/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/j-roskopf%2FSyncSphere/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/j-roskopf%2FSyncSphere/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/j-roskopf","download_url":"https://codeload.github.com/j-roskopf/SyncSphere/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248641648,"owners_count":21138239,"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":["sphere","sync","sync-sphere"],"created_at":"2024-08-01T19:01:42.182Z","updated_at":"2025-04-12T22:33:10.820Z","avatar_url":"https://github.com/j-roskopf.png","language":"Kotlin","funding_links":[],"categories":["Kotlin"],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n  \u003cimg style=\"border-radius: 50%\" src=\"./androidApp/src/androidMain/ic_launcher-playstore.png\" width=\"100px\"\u003e\n  \u003ch1\u003eSync Sphere\u003c/h1\u003e\n\u003c/div\u003e\n\nAre you tired of endless group chats and email threads trying to plan a simple get-together? Sync Sphere is here to streamline your social planning with ease and efficiency.\n\nCreate a Room, Share, and Sync!\n\n[![CI](https://github.com/j-roskopf/SyncSphere/actions/workflows/build.yml/badge.svg)](https://github.com/j-roskopf/SyncSphere/actions/workflows/build.yml)\n\n## Download 📦\n\nSync Sphere is available for Android, iOS, and Desktop\n\n\u003cdiv align=\"center\"\u003e\u003ca href=\"https://apps.apple.com/us/app/sync-sphere/id6471382890\"\u003e\u003cimg src=\"./assets/app_store_download.svg\" width=\"200px\"/\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cdiv align=\"center\"\u003e\u003ca href=\"https://play.google.com/store/apps/details?id=com.joetr.sync.sphere\"\u003e\u003cimg src=\"https://play.google.com/intl/en_us/badges/images/generic/en_badge_web_generic.png\" width=\"230px\"/\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cdiv align=\"center\"\u003e\u003ca href=\"https://apps.apple.com/us/app/sync-sphere-desktop/id6472360923\"\u003e\u003cimg src=\"assets/mac_store_download.svg\" width=\"200px\" /\u003e\u003c/a\u003e\u003c/div\u003e\n\n\n## Publishing\n\n### iOS\niOS is published to the iOS App Store on release via fastlane by creating a tag (release/x.y.z)\n\n### Android\nAndroid is published to the Google Play Store on release via fastlane by creating a tag (release/x.y.z)\n\n### Mac Desktop\nMac is published to the Mac App Store on release by creating a tag (release/x.y.z)\n\n## Useful\n\nFastlane - `bundle exec fastlane ios build`\n\niOS -\n[Fastlane](https://medium.com/revelo-tech/setting-up-automatic-ios-release-with-fastlane-and-match-on-ci-cd-server-16c3f1d79bc5)\n1. Github repo with certificates (MATCH_GIT_BASIC_AUTHORIZATION, MATCH_PASSWORD)\n2. App Store Connect API Key, Issuer ID, and Key ID\n3. `openssl base64 \u003c path/to/key.p8 | tr -d '\\n' | pbcopy`\n4. echo -n your_github_username:your_personal_access_token | base64 for `MATCH_GIT_BASIC_AUTHORIZATION`\n\nAndroid -\n[Fastlane](https://docs.fastlane.tools/actions/upload_to_play_store/)\n[CI](https://proandroiddev.com/how-to-securely-build-and-sign-your-android-app-with-github-actions-ad5323452ce)\n1. Keystore, alias, alias password, keystore password\n2. Google Play Services JSON account credentials\n\nMac -\n[Native distributions \u0026 local execution](https://github.com/JetBrains/compose-multiplatform/blob/master/tutorials/Native_distributions_and_local_execution/README.md#native-distributions--local-execution)\n[Signing and notarizing distributions for macOS](https://github.com/JetBrains/compose-multiplatform/blob/master/tutorials/Signing_and_notarization_on_macOS/README.md)\n[Publishing to Github Actions](https://www.marcogomiero.com/posts/2024/kmp-ci-macos-appstore/)\n[Publishing to Mac App Store](https://www.marcogomiero.com/posts/2024/compose-macos-app-store/)\n\n```\n./gradlew clean spotlessApply detektAll :androidApp:build :desktopApp:packageDistributionForCurrentOS \u0026\u0026 bundle exec fastlane ios build\n```\n\n## On A Fresh Clone\n1. Add this to your home `gradle.properties` (~/.gradle/gradle.properties) for a debug environment on Desktop. iOS and Android are already configured for debug.\n   1. ```groovy\n        systemProp.syncSphereDebug=true\n      ```\n\n2. Add `.env.default` under `fastlane` based on the `.env.default.sample` for building and using fastlane locally (only needed for deploying)\n\n3. Add `keystore.jks` under `androidApp` with a `key.properties` file that looks like:\n   1. ```\n        keyAlias=\u003calias\u003e\n        keyPassword=\u003ckey password\u003e\n        storePassword=\u003cstote password\u003e\n        storeFile=keystore.jks\n      ```\n\n## Mockups\nhttps://studio.app-mockup.com/\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fj-roskopf%2FSyncSphere","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fj-roskopf%2FSyncSphere","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fj-roskopf%2FSyncSphere/lists"}