# Expo + Cloudflare Worker starter The phone records, the Worker holds the key and calls TonePerfect. ```sh cd worker && npm install npx wrangler secret put TONEPERFECT_API_KEY # start with a tp_test_ key npx wrangler secret put APP_TOKEN # any long random string npx wrangler deploy # note the workers.dev URL cd ../app && npm install EXPO_PUBLIC_WORKER_URL=https://toneperfect-proxy..workers.dev \ EXPO_PUBLIC_APP_TOKEN= npx expo start ``` `APP_TOKEN` ships inside the app, so it only keeps casual traffic out. Before launch, check your own user sign-in in the Worker (for example verify a Firebase or Supabase ID token) and rate-limit per user. The app records M4A with `expo-av`, posts it to `/assess`, and lists each syllable with its score and the tone expected and heard (`toneperfect.compact.v1`).