musicshare shows you what your friends are listening to, live, and opens any song in the music app you use. A friend on Spotify is playing something great and you use YouTube Music? One tap and it's playing in YouTube Music.
+ +Share what you play
+See your friends
+Open it anywhere
+Privacy
+Your profile and what you play are public by design: that's the point of the app. musicshare is free and open source (AGPL-3.0); the server can be self-hosted.
+ +musicshare isn't affiliated with Spotify, Apple, Google, Last.fm, ListenBrainz, Plex, Jellyfin, Deezer or TIDAL. Connecting some of these services means using them, which F-Droid marks as "promotes non-free network services".
diff --git a/fastlane/metadata/android/en-US/images/icon.png b/fastlane/metadata/android/en-US/images/icon.png new file mode 100644 index 0000000..93dd443 Binary files /dev/null and b/fastlane/metadata/android/en-US/images/icon.png differ diff --git a/fastlane/metadata/android/en-US/images/phoneScreenshots/README.txt b/fastlane/metadata/android/en-US/images/phoneScreenshots/README.txt new file mode 100644 index 0000000..e6df10b --- /dev/null +++ b/fastlane/metadata/android/en-US/images/phoneScreenshots/README.txt @@ -0,0 +1,3 @@ +Add 2-8 phone screenshots here (PNG or JPEG, portrait), named 1.png, 2.png, ... in the order they +should appear. Good ones: the feed with a friend playing, a profile, reactions, the share sheet, and +the "This phone" setup screen. Delete this file once they're in. diff --git a/fastlane/metadata/android/en-US/short_description.txt b/fastlane/metadata/android/en-US/short_description.txt new file mode 100644 index 0000000..2c08ce8 --- /dev/null +++ b/fastlane/metadata/android/en-US/short_description.txt @@ -0,0 +1 @@ +See what your friends are listening to right now, and play it in your own app diff --git a/fastlane/metadata/android/en-US/title.txt b/fastlane/metadata/android/en-US/title.txt new file mode 100644 index 0000000..f4757aa --- /dev/null +++ b/fastlane/metadata/android/en-US/title.txt @@ -0,0 +1 @@ +musicshare diff --git a/fdroid/tech.chrisedwards.musicshare.yml b/fdroid/tech.chrisedwards.musicshare.yml new file mode 100644 index 0000000..3dfd276 --- /dev/null +++ b/fdroid/tech.chrisedwards.musicshare.yml @@ -0,0 +1,49 @@ +# Draft F-Droid metadata. To submit, copy this to metadata/tech.chrisedwards.musicshare.yml in a fork of +# https://gitlab.com/fdroid/fdroiddata and open a merge request (see docs/FDROID.md). +# Replace PUBLIC_REPO_URL with the public git repository (e.g. a Codeberg or GitHub mirror). +Categories: + - Multimedia + - Connectivity +License: AGPL-3.0-or-later +AuthorEmail: app@musicshare.binarygnome.com +WebSite: https://musicshare.binarygnome.com +SourceCode: PUBLIC_REPO_URL +IssueTracker: PUBLIC_REPO_URL/issues + +AutoName: musicshare + +# Users can connect Spotify (via Last.fm/ListenBrainz), Apple Music, Last.fm and Plex. +AntiFeatures: + NonFreeNet: + en-US: Can share activity from non-free services such as Spotify, Apple Music, Last.fm and Plex, and + opens songs in them. + +RepoType: git +Repo: PUBLIC_REPO_URL.git + +Builds: + - versionName: 1.0.0 + versionCode: 1 + commit: v1.0.0 + subdir: apps/mobile + sudo: + - apt-get update + - apt-get install -y xz-utils + # Expo SDK 57 / React Native 0.86 need Node >= 20.19.4; Debian's is too old. + - curl -Lo /tmp/node.tar.xz https://nodejs.org/dist/v22.23.3/node-v22.23.3-linux-x64.tar.xz + - echo 'df450af89261115ef9f9e3830c3eeb2cc9213b63c720b1af623cb5dcbe2e02de /tmp/node.tar.xz' | sha256sum -c + - tar -xJf /tmp/node.tar.xz -C /usr/local --strip-components=1 + output: android/app/build/outputs/apk/release/app-release-unsigned.apk + build: + # Only the app and the shared package it uses (not the server or website). + - cd ../.. && npm ci --workspace @musicshare/mobile --workspace @musicshare/shared --include-workspace-root + # MUSICSHARE_FOSS=1 leaves out Google's ML Kit barcode scanner (see apps/mobile/app.config.ts). + - MUSICSHARE_FOSS=1 CI=1 npx expo prebuild --platform android --no-install + - cd android && ./gradlew :app:assembleRelease -PreactNativeArchitectures=armeabi-v7a,arm64-v8a,x86_64 + ndk: r27b + +AutoUpdateMode: Version +UpdateCheckMode: Tags ^v[0-9.]+$ +UpdateCheckData: apps/mobile/app.json|"versionCode":\s*(\d+)|apps/mobile/app.json|"version":\s*"([\d.]+)" +CurrentVersion: 1.0.0 +CurrentVersionCode: 1 diff --git a/package-lock.json b/package-lock.json index 6373ee9..405c3c0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -829,6 +829,8 @@ "expo-symbols": "~57.0.3", "expo-system-ui": "~57.0.4", "expo-web-browser": "~57.0.3", + "jpeg-js": "^0.4.4", + "jsqr": "^1.4.0", "react": "19.2.3", "react-dom": "19.2.3", "react-native": "0.86.3", @@ -13232,6 +13234,12 @@ "node": ">=10" } }, + "node_modules/jpeg-js": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.4.4.tgz", + "integrity": "sha512-WZzeDOEtTOBK4Mdsar0IqEU5sMr3vSV2RqkAIzUEV2BHnUfKGyswWFPFwK5EeDo93K3FohSHbLAjj0s1Wzd+dg==", + "license": "BSD-3-Clause" + }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -13329,6 +13337,12 @@ "node": ">=6" } }, + "node_modules/jsqr": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/jsqr/-/jsqr-1.4.0.tgz", + "integrity": "sha512-dxLob7q65Xg2DvstYkRpkYtmKm2sPJ9oFhrhmudT1dZvNFFTlroai3AWSpLey/w5vMcLBXRgOJsbXpdN9HzU/A==", + "license": "Apache-2.0" + }, "node_modules/jsx-ast-utils": { "version": "3.3.5", "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", diff --git a/package.json b/package.json index 4237e02..86abe72 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,6 @@ { "name": "musicshare", + "license": "AGPL-3.0-or-later", "private": true, "workspaces": [ "apps/*", diff --git a/packages/shared/package.json b/packages/shared/package.json index df1e5d0..3cb15c4 100644 --- a/packages/shared/package.json +++ b/packages/shared/package.json @@ -1,6 +1,7 @@ { "name": "@musicshare/shared", "version": "0.0.0", + "license": "AGPL-3.0-or-later", "private": true, "type": "module", "exports": {