Skip to content

About

No description, website, or topics provided.

Resources

Stars

4 stars

Watchers

1 watching

Forks

Repository files navigation

Just Speak

Mobile app that records, transcribes and auto categorizes your words.

Three categories currently supported:

  • Journal
  • Reminders
  • Todo lists

Tech stack

Getting started

Install dependencies

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_key

Configure 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.

Setup you Convex server

This is a terminal blocking command

npx convex dev

Run the frontend app via Expo

In a different terminal

npm run start

Dependency upgrade (September 2026)

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 all

The 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.

Questions?

Chat with @Indy at Convex discord community

Ideas on what's next

  • 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

Known bugs

  • Reminder times are all in UTC. The AI might not be doing this right either.

About

No description, website, or topics provided.

Resources

Stars

4 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages