# Rippr — copies held here Rippr is a GPS ride recorder for motorcycles. There are now **two** codebases, and neither has a git remote — they exist only on that machine, so the bundles below are the only off-machine copies of their history. | Repo | What it is | |---|---| | `~/dojo/rippr` | The original **native Android** app (Kotlin, v1 → v2.0.1). **Superseded**, but still the only version that has recorded real rides. | | `~/dojo/rippr-flutter` | The **Flutter port** — Android *and* iOS. Feature-complete, better tested, never yet ridden. | **Snapshots taken at:** native `ba57a92`, Flutter `a0f678a`. ## What is here | File | Purpose | |---|---| | `rippr-flutter-src/` | Flutter port, browsable source (`git archive HEAD`) | | `rippr-flutter-history.bundle` | Flutter port, full git history — the actual backup | | `rippr-flutter-1.0-debug.apk` | **Installable Flutter build** (`com.rippr.port`) | | `rippr-src/` | Native app, browsable source | | `rippr-full-history.bundle` | Native app, full git history | | `rippr-2.0.1-debug.apk` | Native app, latest installable build (`com.rippr`) | | `rippr-2.0-debug.apk`, `rippr-1.0-debug.apk` | Older native builds | **The two APKs use different application ids on purpose** (`com.rippr` vs `com.rippr.port`), so both install side by side. That is not an accident — validating the port depends on recording the same ride on both at once. ## Installing See **[INSTALL.md](INSTALL.md)** for Android and iOS, including the sideloading route for iPhone (which needs a Mac and takes about ten minutes). ## Restoring either repo ```bash git clone rippr-flutter-history.bundle rippr-flutter cd rippr-flutter && flutter pub get && dart run build_runner build flutter test # or the native app git clone rippr-full-history.bundle rippr cd rippr && echo "sdk.dir=$HOME/Library/Android/sdk" > local.properties ./gradlew assembleDebug ``` Both need **JDK 17–21** for Android — AGP does not support 25. ## Where to start reading Inside `rippr-flutter-src/`: - `README.md` — status, and the two bugs the port found in the native app - `docs/port/PARITY-AUDIT.md` — feature by feature, with the evidence behind each claim - `docs/port/REAL-RIDE-CHECKLIST.md` — **the outstanding work** - `docs/ARCHITECTURE.md` — why it is built this way - `docs/port/PROGRESS.md` — everything that went wrong during the port Inside `rippr-src/` (native): `docs/v2/PROGRESS.md` and `docs/TESTING.md` remain the record of how the app got here. ## Keeping these current ```bash cd ~/dojo/samplez rm -rf rippr-flutter-src && mkdir rippr-flutter-src git -C ~/dojo/rippr-flutter archive HEAD | tar -x -C rippr-flutter-src (cd ~/dojo/rippr-flutter && git bundle create /tmp/fb.bundle --all) \ && mv /tmp/fb.bundle rippr-flutter-history.bundle rm -rf rippr-src && mkdir rippr-src git -C ~/dojo/rippr archive HEAD | tar -x -C rippr-src (cd ~/dojo/rippr && git bundle create /tmp/rb.bundle --all) \ && mv /tmp/rb.bundle rippr-full-history.bundle git bundle verify rippr-flutter-history.bundle git bundle verify rippr-full-history.bundle ``` The exports wipe those directories wholesale, which is why this file and `INSTALL.md` live at the repo root rather than inside them.