An Expo React Native app (iOS and Android) that turns images, audio and PDFs into text, and
answers questions about an uploaded PDF. Its server is ../image-to-text-app.
Read ../AGENTS.md before changing anything. It is the enforceable rule set; ../memory.md records decisions, traps and what has actually been verified. Releasing: docs/release.md. Store listing: docs/STORE_LISTING.md.
- Image to text from the camera or the photo library.
- Audio to text from an in-app recording or an audio file.
- PDF questions and answers, with follow-up questions on the same document. The server decides which models are offered.
- Accounts: register, verify by email (with resend), sign in, reset a forgotten password, and delete the account from the Account tab.
- Stays signed in: the session is kept in the device keystore and refreshed automatically.
- Monthly usage for each kind of work, shown on the Account tab.
- Light, dark and system themes; markdown rendering; copy to clipboard.
src/constants/index.ts— every app-wide constant. The app reads no environment variables.src/api/routes.generated.ts— generated from the server'sapp/paths.py. Never edit it.src/api/http.ts,src/api/client.ts— the only code that callsfetch: version header, timeouts, one shared token refresh, bounded job polling.src/auth/sessionStorage.ts— the session in the platform keystore, device-only.src/logging/— the redacting logger and the batch uploader to the server.src/store/— Redux Toolkit (auth, theme).src/hooks/— React Query jobs and the account.
npm run check # typecheck, lint, no-env / no-console / no-route-literal guards, tests, audit
npx expo-doctorThere is no CI; npm run check is the gate. Its final step, the dependency audit, is currently
red for a reason explained in docs/release.md.
- Node.js 22 or newer
- npm or yarn
- Install dependencies:
npm installOr use Expo's install command to ensure compatible versions:
npx expo install --fix- Start the Expo development server:
npm start- iOS Simulator: Press
iin the terminal or runnpm run ios - Android Emulator: Press
ain the terminal or runnpm run android - Web Browser: Press
win the terminal or runnpm run web - Physical Device: use a development build (
eas build --profile development); the app uses native modules (secure storage, updates) that Expo Go does not include