# @metis/mobile

@metis/mobile — part of the Oshun monorepo.

Expo / React Native app. Run `pnpm start` to launch the Expo dev client, or use
`eas build` for native binaries.

## Scripts

| Command                    | Definition                                           |
| -------------------------- | ---------------------------------------------------- |
| `pnpm start`               | expo start                                           |
| `pnpm start:ios`           | expo start --ios                                     |
| `pnpm start:android`       | expo start --android                                 |
| `pnpm start:web`           | expo start --web                                     |
| `pnpm build`               | expo export --clear --platform web --output-dir dist |
| `pnpm prebuild`            | expo prebuild                                        |
| `pnpm prebuild:clean`      | expo prebuild --clean                                |
| `pnpm lint`                | eslint app src                                       |
| `pnpm typecheck`           | tsc --noEmit                                         |
| `pnpm test`                | jest                                                 |
| `pnpm e2e`                 | maestro test e2e/flows/smoke.yaml                    |
| `pnpm e2e:expo-go`         | maestro test e2e/flows/smoke-expo-go.yaml            |
| `pnpm e2e:offline:expo-go` | maestro test e2e/flows/offline-expo-go.yaml          |

The Expo Go flow expects Metro on port 8081 and `adb reverse tcp:8081 tcp:8081`.
On software-only Android emulators, set `MAESTRO_DRIVER_STARTUP_TIMEOUT=900000`
to allow the driver to start under TCG.

The Android-only offline flow toggles airplane mode, records progress against
the downloaded bundle, restarts Expo Go without clearing app data, verifies the
pending event survives, and restores networking before it exits.

## Layout

- `app/`
- `e2e/`
- `src/`

## Working on this package

The fastest local loop is via Nx:

```bash
pnpm nx test metis-mobile
pnpm nx lint metis-mobile
pnpm nx build metis-mobile
```

When Nx is unhappy (usually because another worktree has duplicate project
names), bypass it with the underlying tools from this directory:

```bash
npx tsc --noEmit
npx vitest run
```

See the [root README](../../../README.md) for monorepo-wide conventions (catalog
deps, commit format, git workflow). See the
[Contributor Guide](../../../docs/CONTRIBUTING.md) for the full PR workflow.
