# Baskit Picker

Flutter app for in-store order picking — built from the scope in `docs/UI/`.

## Run on a connected Android phone

```bash
flutter pub get
dart run flutter_launcher_icons
flutter run -d <device-id>
```

Or install the debug APK:

```bash
flutter build apk --debug
adb install -r build/app/outputs/flutter-apk/app-debug.apk
```

## Demo / live sign-in

| Field | Value |
|-------|-------|
| Phone | `82 461 7739` |
| PIN   | `12345` |

Uses the Sipho Ndlovu picker on Baskit Ops (local Docker + production). When Ops is unreachable the same credentials work against the in-app demo API.

## Backend

- **Live host:** `https://baskitops.appnotify.co.za/api/v1`
- Override locally with `--dart-define=OPS_API_BASE=http://localhost:8080/api/v1` (Android emulator: `http://10.0.2.2:8080/api/v1`).
- The app polls `/api/v1/config` every 30s and shows **Ops live** vs **Demo mode** in the top-right pill.
- When Ops is reachable, all auth + job mutations go through `HttpPickerApi` (no silent demo fallback on errors).
- Demo `MockPickerApi` only runs when Ops is unreachable.
- Core endpoints live on Ops: login, jobs feed, claim/pick/sub/refund/spend/handoff, earnings, devices.
- See `BACKEND_OPS.md` for remaining extras (ask-substitute polling UX, etc.).

## Assets

- `assets/images/baskit-icon.png` — in-app + launcher icon
- Android label: **Baskit Picker**
