YamFluent is a Flutter app for speaking practice. It guides learners through short breathing warmups, AI conversation prompts, audio playback for pronunciation, and per-turn fluency scoring.
- Guided AI conversation flow with pronunciation playback and scoring
- Breathing warmup before sessions
- Practice history and session feedback summaries
- Custom UI widgets and animations
The app is organized by feature, with each feature owning its data, domain, and presentation layers:
data/handles API clients, DTOs (data transfer objects), and storage adaptersdomain/defines entities (core business models) and use cases (application actions)presentation/contains screens, controllers, and UI-specific logic
This layout keeps UI concerns separate from business logic and data access, making each feature easier to reason about and test.
- Flutter (Dart)
- Riverpod for state management
- GoRouter for navigation
- Dio for API networking
- Hive for local storage
lib/src/features/- Feature modules (ai_conversation, breathing_exercise, feedback, practice_history, etc.)lib/ui/widgets/- Shared UI components used across featuresassets/- Images, icons, animations, backgroundsandroid/,ios/,web/,macos/,linux/,windows/- Platform shells
- Flutter SDK (see
pubspec.yamlfor the Dart SDK constraint) - A running backend API that provides session creation, session listing, and audio analysis endpoints
- OAuth / auth provider configuration for sign-in
flutter pub getflutter runflutter run -d chromeflutter run --releaseflutter build apk
flutter build ios
flutter build web- The conversation flow relies on backend APIs for session creation and scoring.
- Audio recording requires microphone permissions on the target platform.
- Web builds require HTTPS (or localhost) for microphone access.
- DTO (Data Transfer Object): A simple data shape used to move data between the API and the app.
- Entity: A core business model used by the app logic.
- Use case: A single app action (e.g., “start conversation session”).
- Controller: Presentation-layer logic that coordinates UI state and user actions.
Proprietary. All rights reserved.