an open source Park Smarter alternative. Works with IPS parking meters.
Find a file
Hank 73079ca659 docs: show the big-brain-driver icon at the top of the README
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-13 20:35:48 -07:00
.forgejo/workflows CI: pre-install NDK+CMake with retry (SDK mirror served a corrupt CMake zip) 2026-07-13 18:42:56 -07:00
app v0.2.1: big-brain-driver app icon 2026-07-13 20:33:15 -07:00
docs docs: plain-language privacy analysis of the official ParkSmarter app 2026-07-13 19:49:16 -07:00
parksmarter-client privacy: remove personal test coordinate from committed docs/tests 2026-07-13 19:35:33 -07:00
scripts CI: dedicated cached runner for this repo (deploy script + volume caches) 2026-07-08 11:05:35 -07:00
.gitignore Release signing fix + Obtainium install guide + publish script 2026-07-07 13:27:19 -07:00
INSTALL.md docs: make the Obtainium add link a real clickable link 2026-07-07 14:02:28 -07:00
package-lock.json Add on-device debug logging: file capture + share (for real-session testing) 2026-07-06 11:59:41 -07:00
package.json Initial commit: parksmarter-client + BigBrainParking app 2026-07-06 08:33:47 -07:00
README.md docs: show the big-brain-driver icon at the top of the README 2026-07-13 20:35:48 -07:00

BigBrainParking — big-brain driver

BigBrainParking

An unofficial, de-Googled client for the ParkSmarter (IPS Group) parking system, built to run on GrapheneOS with UnifiedPush notifications and distributed via Obtainium — no Google Play Services, no Firebase, no app store.

Install it (users)

BigBrainParking installs and updates through Obtainium — no Google Play, no account. Works on GrapheneOS. On your phone (with Obtainium installed), tap:

Add BigBrainParking to Obtainium

or follow INSTALL.md for the manual steps.

Monorepo layout

bigbrainparking/
├── parksmarter-client/   # Zero-dep TypeScript API client (reverse-engineered, live-verified)
├── app/                  # Expo / React Native app (BigBrainParking)
└── .gitea/workflows/     # CI: build signed APK -> publish release for Obtainium
  • parksmarter-client — the API layer. All ~40 endpoints, the custom-header auth model, and response models (most verified against production). Runs anywhere; the app imports it directly. See its own README for the API details.
  • app — the phone app. React Native (Expo prebuild), MapLibre maps, VisionCamera QR scanning, expo-secure-store token storage, local session-expiry reminders, and UnifiedPush wiring.

Features

Feature Status Notes
Phone + password login wired tokens in OS keystore
Map of nearby meters (clickable, zoom, live GPS) wired MapLibre + OpenFreeMap tiles (no key)
Last-lot + My-location search wired opens on your last session's lot; GPS sent only via explicit "My location"
QR kiosk scan → meter lookup wired on-device VisionCamera
Save / share kiosks wired local (no server favorites API exists)
Active / past sessions wired list views + tap for full receipt
Start a paid session works confirmed live end-to-end (real $0.10 DL-zone charge); declines surfaced
Session-expiry reminders wired local on-device notifications — no server, no push
UnifiedPush (ntfy) optional not needed for reminders; stub for future server-initiated msgs

Privacy

BigBrainParking sends your location to ParkSmarter only when you explicitly tap "My location" and search; it opens on your last parking lot instead of your GPS, and ships no analytics/tracking (no Segment/Amplitude/Firebase/Sentry, no ad-ID, no Google services). For a plain-language comparison with the official app — which auto-sends your GPS on map open and bundles that tracking stack — see docs/OFFICIAL_APP_PRIVACY.md. What reaches the API and what never does is also spelled out in the app's About page.

Build & run (dev)

Requires Node 20, JDK 17, Android SDK, and a GrapheneOS device (or any Android device) with USB debugging.

npm install                                   # installs both workspaces
npm run build --workspace parksmarter-client  # compile the client
cd app
npx expo prebuild --platform android          # generate native project
npx expo run:android                          # build + install a dev client

The app talks to prod (apiv2.parksmarter.com) by default — change extra.psEnvironment in app/app.json to point elsewhere.

Notifications on GrapheneOS

Session-expiry reminders are scheduled entirely on-device from each session's end time (Android AlarmManager, via expo-notifications) — no server, no push, no FCM, no Play Services. They work fully offline. Configure the lead time (default 15 min) in Account → Notifications, where a "Send a test reminder" button lets you confirm it fires on your phone. UnifiedPush (ntfy) is wired only as an optional, no-op stub for any future server-initiated messages; nothing time-based needs it.

Distribution via Obtainium (self-hosted)

Tag a release and CI builds a signed APK and publishes it to this repo's releases; your phone's Obtainium tracks the repo and offers updates. See docs/DISTRIBUTION.md for the full server + CI + keystore setup.