# tiptoi-sync Android app (Capacitor + SolidJS) for searching, downloading, and syncing tiptoi books onto a tiptoi pen. All book search/download and pen file access happens **natively on-device** — there is no backend server in this repo despite what `README.md`'s architecture diagram describes (that README is stale/aspirational for a self-hosted server variant; the current implementation is Android-only). ## Repository layout - `client/` — SolidJS + Vite PWA/webview UI (workspace root's actual app code). - `src/api.ts` — all "business logic": scraping Ravensburger's search API/HTML for `.gme` download links, orchestrating download + sync, calling the native plugin. - `src/native/TiptoiPlugin.ts` + `src/native/DevPlugin.ts` — TypeScript interfaces for Capacitor native plugins (`registerPlugin`). Any change to the native Kotlin plugin's method signatures must be mirrored here. - `src/pages/` — `ScanPage.tsx` (barcode/text search) and `DownloadsPage.tsx` (library + pen sync UI). - `android/` — Capacitor Android project, **checked into the repo** (not generated on demand). `android/app/src/main/java/com/tiptoisync/app/` contains the actual native implementation: - `TiptoiPlugin.kt` — SAF (Storage Access Framework) directory picker for the pen, listing/copying/deleting `.gme` files on the pen, downloading GME/cover files into app-private storage via `HttpURLConnection`. - `DevPlugin.kt` — enables Capacitor live-reload against a Vite dev server (see `DEV_URL` below). - `Dockerfile.android`, `build-apk.sh` — reproducible APK build via Docker/Podman (no local Android SDK needed). Output APK lands in `apk-output/tiptoi-sync.apk`. ## Build & dev commands Run from repo root (workspace uses `bun`): ```bash bun install # installs client workspace deps bun run dev # starts Vite dev server (client) with --host bun run build # tsc -b && vite build for client bun run cap:sync # copies web build into android/ project bun run cap:android # builds & runs on connected device/emulator ``` Equivalent scripts also exist directly in `client/package.json` (`bun --cwd client run