Initial commit: parksmarter-client + BigBrainParking app
Reverse-engineered ParkSmarter API client (TypeScript, live-verified) plus a de-Googled Expo/React Native app for GrapheneOS: MapLibre meter map with GPS, VisionCamera QR kiosk scanning with save/share, local session-expiry reminders, UnifiedPush wiring, and Gitea CI to publish signed APKs for Obtainium. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
commit
1dede50995
39 changed files with 3671 additions and 0 deletions
62
.gitea/workflows/build-apk.yml
Normal file
62
.gitea/workflows/build-apk.yml
Normal file
|
|
@ -0,0 +1,62 @@
|
|||
# Build a signed release APK and publish it as a Gitea/Forgejo release.
|
||||
# Obtainium then tracks this repo's releases and offers updates.
|
||||
#
|
||||
# Triggers on any tag like v0.1.0. Requires a self-hosted Actions runner that has
|
||||
# (or a container image that provides) the Android SDK + JDK 17 + Node 20.
|
||||
#
|
||||
# Required repo secrets (Settings -> Actions -> Secrets):
|
||||
# ANDROID_KEYSTORE_B64 base64 of your release keystore (keep this key forever —
|
||||
# Obtainium/F-Droid pin the signer; a new key = users must reinstall)
|
||||
# ANDROID_KEYSTORE_PASSWORD
|
||||
# ANDROID_KEY_ALIAS
|
||||
# ANDROID_KEY_PASSWORD
|
||||
#
|
||||
# Generate the keystore once, locally:
|
||||
# keytool -genkeypair -v -keystore bigbrainparking.keystore \
|
||||
# -alias bigbrainparking -keyalg RSA -keysize 2048 -validity 10000
|
||||
# base64 -w0 bigbrainparking.keystore # -> ANDROID_KEYSTORE_B64
|
||||
|
||||
name: build-apk
|
||||
on:
|
||||
push:
|
||||
tags:
|
||||
- 'v*'
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
# A container with Android SDK + Node preinstalled keeps the runner simple:
|
||||
container:
|
||||
image: reactnativecommunity/react-native-android:latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Install dependencies
|
||||
run: npm install
|
||||
|
||||
- name: Build the API client
|
||||
run: npm run build --workspace parksmarter-client
|
||||
|
||||
- name: Restore signing keystore
|
||||
run: |
|
||||
echo "${{ secrets.ANDROID_KEYSTORE_B64 }}" | base64 -d > "$PWD/app/release.keystore"
|
||||
|
||||
- name: Expo prebuild (generate android/)
|
||||
working-directory: app
|
||||
run: npx expo prebuild --platform android --no-install
|
||||
|
||||
- name: Assemble signed release
|
||||
working-directory: app/android
|
||||
env:
|
||||
BBP_UPLOAD_STORE_FILE: ../release.keystore
|
||||
BBP_UPLOAD_STORE_PASSWORD: ${{ secrets.ANDROID_KEYSTORE_PASSWORD }}
|
||||
BBP_UPLOAD_KEY_ALIAS: ${{ secrets.ANDROID_KEY_ALIAS }}
|
||||
BBP_UPLOAD_KEY_PASSWORD: ${{ secrets.ANDROID_KEY_PASSWORD }}
|
||||
run: ./gradlew assembleRelease --no-daemon
|
||||
|
||||
- name: Publish release with APK
|
||||
uses: akkuman/gitea-release-action@v1
|
||||
with:
|
||||
files: app/android/app/build/outputs/apk/release/*.apk
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
Loading…
Add table
Add a link
Reference in a new issue