Cue helps students first understand what they want to say, then practice saying it well.
frontend/: Vite + React mobile-in-web app.backend/: Express API with Gemini, Google STT/TTS, and mock fallbacks.
Backend:
cd backend
cp .env.example .env
npm install
npm run devFrontend:
cd frontend
cp .env.example .env
npm install
npm run devOpen the frontend dev URL and keep VITE_API_BASE_URL pointed at http://localhost:8787/api.
Cue V0.4 runs without external credentials. Leave GEMINI_API_KEY and GOOGLE_APPLICATION_CREDENTIALS empty in backend/.env.
Mock mode keeps the full demo clickable:
- Learn start/message
- Bridge recap generation
- Speak preparation
- Practice submission
- Review generation
- Take 2
- Audio preview data URLs
Put real backend credentials in backend/.env:
GEMINI_API_KEY=your_key
GEMINI_MODEL=gemini-3-flash-preview
GOOGLE_APPLICATION_CREDENTIALS=/absolute/path/to/service-account.jsonDo not commit .env or service account files.
Visible modes:
- Learn
- Speak
Hidden transition:
- Bridge
Core flows:
Home -> Learn -> Bridge -> Speak Prep -> Speak Practice -> Speak Review
Home -> Speak Prep -> Speak Practice -> Speak Review
Language concepts are separate:
uiLanguage: app interface language.sourceLanguage: learner thinking/learning language.targetLanguage: speaking practice language.