Skip to content

noworneverev/speak-quest

Repository files navigation

🎙️ SpeakQuest

AI-powered English speaking practice with Duolingo-style gamification. Practice real-world conversations through AI roleplay — ordering coffee, job interviews, networking, and more.

🔗 Live Demo → noworneverev.github.io/speak-quest

Features

  • 36 missions across 6 themed worlds
  • AI roleplay with dynamic characters (barista, interviewer, doctor, neighbor, etc.)
  • Smart conversation ending — AI detects when your goal is met
  • Real-time speech transcription via Web Speech API
  • Detailed evaluation with quote-and-correct feedback + pronunciation tips
  • Gamification: XP, levels, stars, hearts, daily streaks
  • Dual AI backends: Google Gemini (cloud) or Ollama (local)
  • i18n: English / 繁體中文
  • Progress saved in browser localStorage

Mission Worlds

# World Missions Topics
1 ☕ Café & Restaurants 6 Order drinks, dine out, pay the bill
2 ✈️ Travel & Transportation 6 Airport, immigration, taxis, directions
3 🏨 Hotel & Accommodation 6 Check-in, room issues, room service
4 🏥 Emergencies & Daily Life 6 Pharmacy, doctor, shopping, returns
5 💼 Business & Workplace 6 Job interview, meetings, presentations, salary negotiation
6 🎉 Social & Everyday 6 Meet neighbors, invite friends, small talk, complaints

Quick Start

Use Online

Visit noworneverev.github.io/speak-quest, enter your Google AI Studio API key, and start practicing.

Run Locally

git clone https://github.com/noworneverev/speak-quest.git
cd speak-quest
flutter pub get
flutter run -d chrome

Ollama (Local AI)

Use a local AI model instead of Gemini — works both locally and from the deployed GitHub Pages version.

# 1. Install Ollama (https://ollama.ai)
# 2. Download the model
ollama run gemma4

# 3. Allow CORS from GitHub Pages (if using the deployed version)
#    On Windows (PowerShell):
$env:OLLAMA_ORIGINS="https://noworneverev.github.io"; ollama serve
#    On macOS/Linux:
OLLAMA_ORIGINS=https://noworneverev.github.io ollama serve

# 4. In SpeakQuest Settings → enable "Use Local Ollama"

Note: Chrome allows HTTPS pages to connect to http://localhost, so the deployed GitHub Pages version can talk to your local Ollama instance.

Tech Stack

Framework Flutter 3.7+ / Dart 3.7+
State Provider
AI Gemini API / Ollama (OpenAI-compatible)
STT Web Speech API
TTS flutter_tts
Storage SharedPreferences (localStorage on web)
CI/CD GitHub Actions → GitHub Pages

Project Structure

lib/
├── data/          # Mission definitions (36 missions)
├── l10n/          # Localization (en, zh)
├── models/        # ChatMessage, Mission, UserProgress, World
├── providers/     # AppState, Conversation, Progress
├── screens/       # Onboarding, WorldMap, Chapter, MissionBriefing,
│                  # Conversation, Results, Profile, Settings
├── services/      # AiService (Gemini/Ollama), STT, TTS, Storage
├── theme/         # Design system & colors
└── widgets/       # MicButton, StarRating, AnimatedCounter, WorldCard

Deployment

Pushing to main auto-deploys via GitHub Actions. To deploy manually:

flutter build web --release --base-href /speak-quest/

License

MIT

About

AI-powered language speaking practice app

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors