diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md new file mode 100644 index 0000000..7438162 --- /dev/null +++ b/.github/copilot-instructions.md @@ -0,0 +1,90 @@ +# 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