diff --git a/distribution/README.md b/distribution/README.md new file mode 100644 index 0000000..9b05ae7 --- /dev/null +++ b/distribution/README.md @@ -0,0 +1,74 @@ +# Distribution without GitHub + +SkateSpots is published from a self-hosted **Forgejo** instance. No GitHub +account is required. + +## Current release source + +- Forge: +- Latest release: +- Signed APK (1.7.61): + +- SHA-256: + `db0279f759efd9fa05d9d1bed57a3f5856777e6ccb208d3ed78b15398f266fba` + +The APK is signed with the same key as the Zapstore build. Installing an +F-Droid-signed build over it would require uninstalling SkateSpots and losing +the local key/settings. Obtanium and direct APK updates keep the install. + +## Obtanium + +Obtanium cannot use a Zapstore URL as a source. Use the self-hosted Forgejo +release page instead: + +1. Open Obtanium → **Add App**. +2. Paste: + `https://git.skate-spots.org/skatespots/SkateSpots/releases/latest` +3. If Obtanium does not recognise the self-hosted host, select **Override + Source → HTML**. +4. Set version extraction if desired: + `SkateSpots-([0-9.]+)\.apk`, match group `1`. + +The release page contains exactly one `.apk`, so Obtanium can follow the latest +release without a custom store listing. + +## F-Droid and IzzyOnDroid + +- Source: `https://git.skate-spots.org/skatespots/SkateSpots.git` +- Recipe draft: `distribution/fdroiddata/org.skatespots.app.yml` +- Store metadata: `fastlane/metadata/android/en-US/` + +### IzzyOnDroid first + +IzzyOnDroid accepts reproducible third-party builds and is the least risky step +before F-Droid main. Submit the public source URL and the signed release. Keep +the developer signature for the Obtanium/APK channel; do not replace the +existing install with an F-Droid-signed build without telling users. + +### F-Droid main + +F-Droid main requires: + +- a public, clonable source repository (the Forgejo URL above); +- a working `fdroiddata` recipe including the generated Android project step; +- a reproducible build or an accepted build recipe; +- maintainer review and F-Droid's own signing key. + +The recipe is a draft, not an accepted F-Droid build. The Android project is +generated by Capacitor and intentionally not committed, so the prebuild steps +must be verified in the F-Droid build environment before submitting. + +## Release checklist + +1. `npm test` +2. `scripts/release.sh patch --yes --deploy` (Zapstore + web) +3. Push the release tag and `main` to Forgejo. +4. Attach `android/app/build/outputs/apk/release/app-release.apk` and its + `.sha256` to the Forgejo release. +5. Verify the public latest-release page contains the new `.apk`. +6. Update the static download page if the displayed version/checksum changes: + `public/download/index.html`. + +The Forgejo instance runs on the same host as the relay. It exposes public +read access and HTTPS through Caddy; registration is disabled and administrative +credentials are kept on the host, not in this repository. diff --git a/distribution/fdroiddata/org.skatespots.app.yml b/distribution/fdroiddata/org.skatespots.app.yml new file mode 100644 index 0000000..98d73d4 --- /dev/null +++ b/distribution/fdroiddata/org.skatespots.app.yml @@ -0,0 +1,51 @@ +Categories: + - Sports +License: AGPL-3.0-only +AuthorName: SkateSpots +WebSite: https://skate-spots.org +SourceCode: https://git.skate-spots.org/skatespots/SkateSpots +IssueTracker: https://git.skate-spots.org/skatespots/SkateSpots/issues +Changelog: https://git.skate-spots.org/skatespots/SkateSpots/releases + +AutoName: SkateSpots +Summary: Local-first skate map, crews, events and marketplace +Description: |- + SkateSpots is a local-first skating map for finding spots, crews, events and + gear. Your keys stay on your device, your messages stay in encrypted crew + chats and the app does not use analytics or sell your data. + + Find skate spots on the map, add new ones, organise sessions with your crew, + follow events and browse the community marketplace. The Android app bundles + the same web app for fast shell startup and native camera, location, push and + NFC support where available. + + SkateSpots is self-hosted and built on open protocols. You can run your own + relay and Blossom storage instead of relying on a central service. + +RepoType: git +Repo: https://git.skate-spots.org/skatespots/SkateSpots.git + +Builds: + - versionName: 1.7.61 + versionCode: 10761 + commit: 50c95d0ff7e083f81eaeeee167c4cb7c68e3b038 + subdir: . + prebuild: + - npm ci + - npm run android:init + - npm run android:sync + build: + - cd android && ./gradlew assembleRelease --no-daemon + output: android/app/build/outputs/apk/release/app-release.apk + # The generated Android project is intentionally not committed. This + # recipe recreates it with Capacitor before Gradle runs. F-Droid will sign + # the resulting APK with its own key. + sudo: + - apt-get update + - apt-get install -y openjdk-21-jdk-headless + ndk: 27.0.12077973 + +AutoUpdateMode: Version +UpdateCheckMode: Tags +CurrentVersion: 1.7.61 +CurrentVersionCode: 10761 diff --git a/fastlane/metadata/android/en-US/changelogs/10761.txt b/fastlane/metadata/android/en-US/changelogs/10761.txt new file mode 100644 index 0000000..a946cdf --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/10761.txt @@ -0,0 +1 @@ +Cordn setup now shows visible progress: the device-key step is checked once prepared, and the approval step shows a spinner while waiting. The APK uses the same signing key as the Zapstore release. diff --git a/fastlane/metadata/android/en-US/full_description.txt b/fastlane/metadata/android/en-US/full_description.txt new file mode 100644 index 0000000..469856a --- /dev/null +++ b/fastlane/metadata/android/en-US/full_description.txt @@ -0,0 +1,15 @@ +SkateSpots is a local-first skating map for finding spots, crews, events and +gear. Your keys stay on your device, your messages stay in encrypted crew chats +and the app does not use analytics or sell your data. + +Find skate spots on the map, add new ones, organise sessions with your crew, +follow events and browse the community marketplace. The Android app bundles the +same web app for fast offline shell startup and native camera, location, push +and NFC support where available. + +SkateSpots is self-hosted and built on open protocols. You can run your own +relay and Blossom storage instead of relying on a central service. + +Lightning payments are optional and self-custodial. Transport and driver +profiles are self-attested; SkateSpots does not verify a licence, insurance or +vehicle roadworthiness. 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..aebe251 Binary files /dev/null and b/fastlane/metadata/android/en-US/images/icon.png differ 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..fddab98 --- /dev/null +++ b/fastlane/metadata/android/en-US/short_description.txt @@ -0,0 +1 @@ +Local-first skate map, crews, events and marketplace. diff --git a/fastlane/metadata/android/en-US/title.txt b/fastlane/metadata/android/en-US/title.txt new file mode 100644 index 0000000..7478758 --- /dev/null +++ b/fastlane/metadata/android/en-US/title.txt @@ -0,0 +1 @@ +SkateSpots diff --git a/public/download/index.html b/public/download/index.html new file mode 100644 index 0000000..9df7efe --- /dev/null +++ b/public/download/index.html @@ -0,0 +1,121 @@ + + + + + + + SkateSpots APK + + + + +
+

SkateSpots · Android

+

Get the signed APK.

+

+ Local-first skating map, crews, events and marketplace. No store account + required. This is the same signing key as the Zapstore and Obtanium + releases, so it updates over an existing install. +

+ + + Download SkateSpots-1.7.61.apk · 56 MB + + + +
+ Requires Android 7.0 or newer. + SHA-256: db0279f759efd9fa05d9d1bed57a3f5856777e6ccb208d3ed78b15398f266fba + Only install APKs from a source you trust. Android will ask you to allow installs from your browser. +
+ + +
+ +