From 13c6ad68f08b76b908cf823caf022840220a19a3 Mon Sep 17 00:00:00 2001 From: byGalax Date: Wed, 13 May 2026 23:38:05 +0200 Subject: [PATCH] docs(mobile): phase 0 quickstart + roadmap pointer --- apps/mobile/README.md | 72 ++++++++++++++++++++++++++++++++++--------- 1 file changed, 58 insertions(+), 14 deletions(-) diff --git a/apps/mobile/README.md b/apps/mobile/README.md index d3d2e91..be28000 100644 --- a/apps/mobile/README.md +++ b/apps/mobile/README.md @@ -1,27 +1,71 @@ # @chat-app/mobile -Expo + React Native client for iOS and Android. +Expo + React Native client for **Netralax** on iOS and Android. ## Prerequisites - Node 22+, pnpm 9+ -- Xcode (iOS) / Android Studio (Android) -- Optional: `npm i -g eas-cli` for cloud builds +- Xcode (iOS) / Android Studio (Android) — only needed for local + prebuild + emulator runs; EAS Build runs everything in the cloud. +- An Expo account (free) — required for `eas init` below. +- Optional: `npm i -g eas-cli` for the CLI commands. If you skip + globals, prefix every `eas` invocation with `npx eas-cli`. -## Dev +## Phase 0 quickstart ```bash -# from repo root +# From the repo root. pnpm install -pnpm mobile:dev # expo start -pnpm mobile:ios # native iOS run -pnpm mobile:android # native Android run + +# One-time: claim an EAS project ID. This rewrites the placeholder +# `extra.eas.projectId` in app.json and links the local repo to your +# Expo dashboard. Commit the resulting app.json change. +cd apps/mobile +npx eas-cli init + +# Sign in to Expo if you haven't. +npx eas-cli login + +# Build a development client (custom dev-client APK + iOS simulator +# bundle). First iOS build prompts for Apple ID — free signing works +# for development distribution. +npx eas-cli build --platform all --profile development ``` -## Notes +When the builds finish, EAS gives you a QR code / install link. Install +the dev client on your device, then start the Metro server from the repo +root: -- Uses Expo Router (file-based). Screens live under `app/`. -- Secrets stored via `expo-secure-store` (Keychain / Keystore). -- Local encrypted history via `expo-sqlite`. -- Crypto via `react-native-libsodium`. -- Shared business logic lives in `@chat-app/shared`. +```bash +pnpm mobile:dev # = pnpm --filter @chat-app/mobile dev = expo start --dev-client +``` + +Open the dev client on the device, scan the QR code, and Netralax's +Landing screen should render. + +## Day-to-day + +```bash +pnpm mobile:dev # Metro server +pnpm mobile:ios # native iOS run (local Xcode) +pnpm mobile:android # native Android run (local Android Studio) +pnpm mobile:typecheck # tsc --noEmit +``` + +## Architecture notes + +- Expo Router (file-based) — screens live under `app/`. +- `expo-secure-store` — Keychain / Keystore-backed secret store (used by + the mobile `SecretStore` adapter in Phase 1). +- `expo-sqlite` — local encrypted history (Phase 1). +- `react-native-libsodium` — crypto primitives (Phase 1's + `CryptoBackend` adapter wraps this). +- `@chat-app/shared` — business logic shared with the desktop, including + the `CryptoBackend` and `SecretStore` interfaces the mobile adapters + plug into. +- `lib/sharedSmoke.ts` exists only to prove Metro can resolve the + workspace package; it's deleted in Phase 1. + +## Roadmap + +See `docs/superpowers/specs/2026-05-13-mobile-deployment-roadmap.md`.