Mobile app that records, transcribes and auto categorizes your words.
Three categories currently supported:
- Journal
- Reminders
- Todo lists
- Expo for the frontend
- Expo router
- React native paper for material design components
- Convex for the backend
- OpenAI for transcription and categorization
Use Node.js 24 LTS (nvm use reads .nvmrc), then run npm ci.
Create .env.local with the frontend configuration (both values are public):
EXPO_PUBLIC_CONVEX_URL=https://your-deployment.convex.cloud
CLERK_PUBLISHABLE_KEY=pk_test_your_publishable_keyConfigure OPENAI_API_KEY in your Convex deployment, and update the Clerk
issuer in convex/auth.config.js for your Clerk instance. The app uses Clerk's
email/password flow with email-code verification and a Convex JWT template
named convex.
This is a terminal blocking command
npx convex dev
In a different terminal
npm run start
The app now uses Expo SDK 57, React 19.2, React Native 0.86, Clerk Expo 4,
Convex 1.45, and OpenAI 7. Expo-managed packages are pinned to SDK-compatible
versions. Babel stays on 7.x and TypeScript on 6.0 because those are supported
by this Expo release; npm outdated will show newer versions outside this tested SDK set.
Recording and playback now use expo-audio with microphone permissions in
app.json. Clerk uses @clerk/expo, its maintained secure token cache, and
the current password/verification APIs. Rebuild existing native development
clients before running this version.
Validation commands:
npm run ts:check
npx expo install --check
npx expo-doctor
npx expo export --platform allThe upgrade passed frontend/backend type checks, all 21 Expo Doctor checks, and production bundle exports for iOS, Android, and web. Bundle validation used placeholder public configuration; device testing with real credentials is still needed for sign-up, sign-in, session persistence, microphone denial, record/stop/replay, upload, transcription, and categorization. Native app compilation and authenticated end-to-end flows have not been validated.
The live dev watcher was also verified against neighborly-leopard-798. Expo
served the sign-in page at http://localhost:8081 without browser errors, the
Clerk issuer matched the backend auth config, and a live unauthenticated notes
query was correctly rejected. The frontend reads EXPO_PUBLIC_CONVEX_URL,
which convex dev writes to .env.local.
npm audit reports 27 moderate findings in the latest upstream dependency
tree, with no high or critical findings. These originate from uuid and
stream-json under Expo/Clerk dependencies, and decode-uri-component under
Expo Router. Resolving them requires upstream fixes or incompatible dependency
changes; do not use npm audit fix --force to downgrade the Expo stack.
Upgrade references: Expo SDK 57, Expo Audio, and Clerk upgrade guide.
Chat with @Indy at Convex discord community
- Significantly improve UI
- Switch from React Native Paper to Tamagui?
- Make multiple offline recordings to be uploaded when back online
- Make this truly cross platform with React Native / Expo Web
- Actually use system notifications for reminders
- Push notifications from server to tell you when categorization is done
- Package a real Android app to use properly
- Package a real iOS app to use properly
- AI to make suggestions to journal entry for publishing as blog post
- Reminder times are all in UTC. The AI might not be doing this right either.