From 02bb8a3dd759c9faa320b13b1826bd9261b7e2e3 Mon Sep 17 00:00:00 2001 From: Davide Scaini Date: Fri, 24 Apr 2026 11:01:24 +0200 Subject: [PATCH] feat: serve bincio wheel locally for mobile dev testing MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Add GET /api/wheel/download to serve/server.py and edit/server.py: serves dist/bincio-*.whl via FileResponse; in production nginx takes the request before FastAPI, so this is a no-op there but works locally - wheel_version response now includes api_url: "/api/wheel/download" alongside the nginx-served url field - Bundle mobile/assets/bincio.whl (built from dist/) as an offline fallback for Pyodide testing before the first instance sync - docs/mobile-app.md: document dev setup — bundled asset, local server endpoint, and how to refresh the bundle with uv build + cp --- bincio/edit/server.py | 33 ++++++- bincio/serve/server.py | 20 +++- docs/mobile-app.md | 201 +++++++++++++++++++++++++++++++++++---- mobile/assets/bincio.whl | Bin 0 -> 60977 bytes 4 files changed, 232 insertions(+), 22 deletions(-) create mode 100644 mobile/assets/bincio.whl diff --git a/bincio/edit/server.py b/bincio/edit/server.py index 2f25567..c919bce 100644 --- a/bincio/edit/server.py +++ b/bincio/edit/server.py @@ -11,7 +11,7 @@ from typing import Any from fastapi import FastAPI, File, Form, HTTPException, Request, UploadFile from fastapi.middleware.cors import CORSMiddleware from fastapi.middleware.gzip import GZipMiddleware -from fastapi.responses import HTMLResponse, JSONResponse, RedirectResponse, StreamingResponse +from fastapi.responses import FileResponse, HTMLResponse, JSONResponse, RedirectResponse, StreamingResponse from bincio.edit.ops import SPORTS, STAT_PANELS, VALID_ACTIVITY_ID @@ -467,6 +467,37 @@ async def recalculate_elevation_hysteresis_endpoint(activity_id: str) -> JSONRes raise HTTPException(422, str(e)) +@app.get("/api/wheel/version") +async def wheel_version() -> JSONResponse: + """Public endpoint: current bincio wheel version for mobile app update checks.""" + import importlib.metadata + try: + version = importlib.metadata.version("bincio") + except importlib.metadata.PackageNotFoundError: + version = "0.1.0" + return JSONResponse({ + "version": version, + "url": f"/bincio-{version}-py3-none-any.whl", + "api_url": "/api/wheel/download", + }) + + +@app.get("/api/wheel/download") +async def wheel_download() -> FileResponse: + """Serve the bincio wheel directly (used locally; in prod nginx serves /bincio-*.whl).""" + import importlib.metadata + try: + version = importlib.metadata.version("bincio") + except importlib.metadata.PackageNotFoundError: + version = "0.1.0" + wheel_name = f"bincio-{version}-py3-none-any.whl" + dist_dir = Path(__file__).parent.parent.parent / "dist" + wheel_path = dist_dir / wheel_name + if not wheel_path.exists(): + raise HTTPException(status_code=404, detail=f"{wheel_name} not found in dist/") + return FileResponse(wheel_path, media_type="application/zip", filename=wheel_name) + + @app.post("/api/activity/{activity_id}/images") async def upload_image(activity_id: str, file: UploadFile = File(...)) -> JSONResponse: dd = _get_data_dir() diff --git a/bincio/serve/server.py b/bincio/serve/server.py index ff78399..492e0c1 100644 --- a/bincio/serve/server.py +++ b/bincio/serve/server.py @@ -23,7 +23,7 @@ from typing import Any, Optional log = logging.getLogger("bincio.serve") from fastapi import Cookie, FastAPI, File, Form, HTTPException, Request, Response, UploadFile -from fastapi.responses import RedirectResponse, StreamingResponse +from fastapi.responses import FileResponse, RedirectResponse, StreamingResponse from fastapi.middleware.cors import CORSMiddleware from fastapi.middleware.gzip import GZipMiddleware from fastapi.responses import JSONResponse @@ -448,9 +448,27 @@ async def wheel_version() -> JSONResponse: return JSONResponse({ "version": version, "url": f"/bincio-{version}-py3-none-any.whl", + "api_url": f"/api/wheel/download", }) +@app.get("/api/wheel/download") +async def wheel_download() -> FileResponse: + """Serve the bincio wheel directly (used locally; in prod nginx serves /bincio-*.whl).""" + import importlib.metadata + try: + version = importlib.metadata.version("bincio") + except importlib.metadata.PackageNotFoundError: + version = "0.1.0" + wheel_name = f"bincio-{version}-py3-none-any.whl" + # Look in dist/ relative to repo root (two levels up from this file) + dist_dir = Path(__file__).parent.parent.parent / "dist" + wheel_path = dist_dir / wheel_name + if not wheel_path.exists(): + raise HTTPException(status_code=404, detail=f"{wheel_name} not found in dist/") + return FileResponse(wheel_path, media_type="application/zip", filename=wheel_name) + + @app.post("/api/auth/login", response_model=LoginResponse) async def login( login_req: LoginRequest, diff --git a/docs/mobile-app.md b/docs/mobile-app.md index 3f0a3a2..1f7cb08 100644 --- a/docs/mobile-app.md +++ b/docs/mobile-app.md @@ -51,20 +51,53 @@ server uses. Any tool in any language can read them. --- -## Setup +## Development setup + +### Two build modes: Expo Go vs Development Build + +This is the most important thing to understand before starting. + +**Expo Go** is the Expo app available on the Play Store / App Store. It runs any +Expo project by scanning a QR code — no compilation step. However, it only supports +Expo's own built-in modules. It does **not** support third-party native modules. + +**Development Build** is a custom version of the Expo Go app compiled specifically +for this project. It includes all third-party native modules (react-native-webview, +maplibre). It is installed once on the device; after that, code changes still update +instantly via Metro (the JS bundler) — no rebuild needed. + +| | Expo Go | Development Build | +|---|---|---| +| Setup | Scan QR, instant | Build APK once (local or EAS cloud) | +| expo-sqlite | ✅ | ✅ | +| expo-document-picker | ✅ | ✅ | +| react-native-webview (Pyodide) | ✗ | ✅ | +| @maplibre/maplibre-react-native | ✗ | ✅ | +| Code changes | instant (Metro) | instant (Metro) | +| Native changes | need new Expo Go release | rebuild APK | + +**Phase 0** only uses built-in Expo modules — Expo Go works. **Phase 1** (Pyodide) +requires a Development Build because `react-native-webview` is a native module. + +The recommended setup from the start is a Development Build so you never hit a wall +mid-phase. + +--- ### Prerequisites -| Tool | Minimum version | Notes | +| Tool | Required for | Install | |---|---|---| -| Node.js | 18 | 20 LTS recommended — install via [nodejs.org](https://nodejs.org) or `nvm` | -| npm | ships with Node | | -| Expo Go app | latest | Install on your phone — scan the QR code to run the app instantly during development | -| Xcode | 15+ | **macOS only, iOS builds.** Install from the App Store, then `xcode-select --install` | -| Android Studio | latest | **Android builds / emulator.** Includes the SDK and `adb` | +| Node.js 20 LTS | everything | [nodejs.org](https://nodejs.org) or `nvm install 20` | +| npm | everything | ships with Node | +| Android Studio | Android dev build / emulator | [developer.android.com/studio](https://developer.android.com/studio) | +| Xcode 15+ | iOS only, macOS only | App Store → `xcode-select --install` | +| EAS CLI | cloud builds (optional) | `npm install -g eas-cli` | -You do **not** need Xcode or Android Studio to start. Expo Go lets you run the app -on your physical device by scanning a QR code — no native build required. +You do **not** need a physical Android device to start. The Android emulator +(AVD Manager inside Android Studio) works fine for development. + +--- ### First-time setup @@ -73,25 +106,153 @@ on your physical device by scanning a QR code — no native build required. bash mobile/setup.sh ``` -The script checks prerequisites, installs npm dependencies, and generates the -required Expo type declarations. It prints next steps when done. +The script checks Node, Android SDK, and Xcode availability; installs npm +dependencies; and generates the required Expo type declarations. -### Running the app +--- + +### Phase 0 — Expo Go (quickest start) + +Since Phase 0 uses only built-in Expo modules, you can start with Expo Go: ```bash cd mobile - -# Development server — scan QR with Expo Go on your phone npx expo start +``` -# Run on a connected Android device or emulator -npx expo run:android +1. Install **Expo Go** on your Android phone from the Play Store. +2. Scan the QR code printed in the terminal. +3. The app loads instantly. Code changes in your editor appear on the phone + within a second or two. -# Run on iOS simulator (macOS only) -npx expo run:ios +> **Limitation**: once you add the Pyodide WebView in Phase 1, you must switch to +> a Development Build. Expo Go will show an error for `react-native-webview`. -# Build a standalone APK for Karoo sideloading -npx eas build -p android --profile preview +--- + +### Phase 1+ — Development Build + +#### Option A: local build (Android Studio required) + +Plug in an Android device via USB (or start an emulator in Android Studio), then: + +```bash +cd mobile +npx expo run:android # builds APK, installs it, starts Metro +``` + +This compiles the full native project once (~3–5 min). After that, JS changes +reflect instantly without rebuilding. + +For the emulator, create an AVD in Android Studio with API 33+ and start it before +running the command. + +#### Option B: EAS Build (cloud, no Android Studio required) + +EAS (Expo Application Services) builds the APK in the cloud. You get a download +link; install it on your device once. + +```bash +npm install -g eas-cli +eas login # Expo account needed +eas build -p android --profile development +``` + +After install, start Metro locally: + +```bash +cd mobile +npx expo start --dev-client +``` + +Shake the device to open the dev menu and enter the Metro URL if needed. + +--- + +### iOS development (macOS only) + +```bash +cd mobile +npx expo run:ios # opens iOS simulator, builds, and runs +``` + +Requires Xcode 15+ and an active iOS simulator. Cloud builds via EAS: + +```bash +eas build -p ios --profile development # requires Apple Developer account ($99/yr) +``` + +--- + +### Where Pyodide comes from + +The hidden WebView loads Pyodide from the **jsDelivr CDN** — the same source +as the `/convert/` page on the web: + +``` +https://cdn.jsdelivr.net/pyodide/v0.26.4/full/pyodide.js (~30 MB) +``` + +On first extraction after install, the WebView downloads and caches this +runtime in `expo-file-system`'s document directory. Subsequent extractions use +the cached copy — no internet required. + +The **bincio wheel** (~50 KB) is fetched from: + +``` +GET {instance_url}/api/wheel/version → { version, url, api_url } +GET {instance_url}/bincio-{version}-py3-none-any.whl (nginx, prod) +GET {instance_url}/api/wheel/download (FastAPI, local dev) +``` + +If no instance is configured, it falls back to `https://bincio.org`. The wheel +is also cached locally and re-downloaded only when the version changes. + +**Local development** (before bincio is published to PyPI): the wheel is not on +PyPI, so there is a bundled fallback at `mobile/assets/bincio.whl`. The +extraction code loads it from the app bundle when no cached wheel exists yet. +This bundled copy is updated manually by running: + +```bash +uv build --wheel # builds dist/bincio-*.whl +cp dist/bincio-*.whl mobile/assets/bincio.whl +``` + +The server-side `GET /api/wheel/download` endpoint also serves the wheel +directly from `dist/` — useful when running a local `bincio serve` instance on +the same WiFi network as the test device and wanting to exercise the update flow. + +The **common packages** (`fitdecode`, `gpxpy`, `lxml`, `pyyaml`) are fetched from +the Pyodide CDN via micropip on first use and cached by the WebView's internal +storage. + +**Summary of what touches the network:** + +| Asset | Size | When | Cached | +|---|---|---|---| +| Pyodide runtime | ~30 MB | once (first extraction ever) | ✅ permanently | +| Common packages | ~5 MB | once | ✅ permanently | +| bincio wheel | ~50 KB | on version bump (bundled fallback in assets/) | ✅ until next update | +| Map tiles | per-tile | on pan/zoom | ✅ by MapLibre | + +Everything else — the activity files, the extracted BAS JSON — stays on device. + +--- + +### Distributing the app + +| Target | Method | +|---|---| +| Your own Android phone | `npx expo run:android` via USB, or EAS development build | +| Karoo 2 | EAS production build → download APK → sideload via `adb install bincio.apk` or Karoo's app sideloader | +| Other Android users | EAS build → share APK download link (no Play Store needed) | +| Play Store | EAS production build → upload `.aab` to Play Console | +| iOS users | EAS build → TestFlight (beta) or App Store | + +For Karoo sideloading: +```bash +eas build -p android --profile preview # produces a standalone APK +adb install /path/to/bincio.apk # with Karoo connected via USB ``` --- diff --git a/mobile/assets/bincio.whl b/mobile/assets/bincio.whl new file mode 100644 index 0000000000000000000000000000000000000000..18bdd2e159cf8b914ea611b2aa98f28e166e6f05 GIT binary patch literal 60977 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 literal 0 HcmV?d00001