Hi π€ In this project, you'll build a mobile-first AI language learning app focused on spoken Mandarin. The app combines structured lessons, listening/speaking drills, and real-time roleplay conversations powered by LLMs. Users can sign in with magic links, complete onboarding, practise across a curriculum, track speaking/listening minutes, and unlock premium features like custom AI-generated scenarios.
We'll use technologies such as Expo (React Native), TypeScript, Expo Router, Supabase Auth + Postgres + Edge Functions, OpenRouter, Expo AV/Speech, and more.
Features:
- π± Cross-platform iOS/Android app with Expo + Expo Router
- π Passwordless authentication with Supabase magic links
- π§ Personalized onboarding flow (level, motivation, interests)
- π Structured Mandarin curriculum (12 chapters, 86 lessons)
- π§ Listening + speaking practice modes with progress tracking
- ποΈ Voice recording and AI transcription for pronunciation practice
- π¬ Real-time AI roleplay conversations with scenario goals/tasks
- β¨ Custom scenario generation
- π Speaking/listening stats and lesson completion tracking
- π³ In-app paywall flow
Follow these steps to install and set up the project.
git clone https://https://github.com/Andreaswt/mandarin-language-learning-app
cd mandarin-language-learning-app- Node.js
- npm or pnpm
- Supabase CLI
Install Supabase CLI:
npm install supabase --save-devCreate a .env file in the root:
EXPO_PUBLIC_SUPABASE_URL=your_supabase_project_url
EXPO_PUBLIC_SUPABASE_KEY=your_supabase_anon_keyLogin and link your project:
npx supabase login
npx supabase link --project-ref YOUR_PROJECT_REFApply database migrations:
npx supabase db pushDeploy Edge Functions:
npx supabase functions deploy chat-completion
npx supabase functions deploy transcribe-audio
npx supabase functions deploy scenario-generate
npx supabase functions deploy start-trialSet required function secrets:
npx supabase secrets set OPENROUTER_API_KEY=your_openrouter_key
npx supabase secrets set SUPABASE_SERVICE_ROLE_KEY=your_service_role_keyAdd your app redirect URL in Supabase Auth URL configuration:
convo://Install dependencies:
npm installRun the app:
npm run startRun on iOS simulator:
npm run iosRun on Android emulator:
npm run androidRun lint:
npm run lint