← all projects
In progress · iOS · SwiftUI

Tiếng Việt Learning Tools

a Vietnamese learning app that takes dialect seriously

  • Mobile (iOS)
  • Speech Recognition
  • Unit Testing
  • Dialect Audio

What it involved

Mobile (iOS)
A native SwiftUI app for iPhone.
Speech Recognition
Pronunciation is graded with Apple's on-device speech recognition.
Unit Testing
The game logic lives in a view model so XCTest can cover it.
Dialect Audio
The alphabet is recorded three times, North, Central (Huế) and South, by a different native speaker each.

About

A Vietnamese learning app for iOS. Most apps flatten the language into one accent; this one records the alphabet three times — North, Central (Huế) and South — with a different native speaker for each, because those regions genuinely do not sound alike and a learner who only ever hears Hanoi is unprepared for Saigon. Speaking practice grades pronunciation through Apple's on-device speech recognition, alongside a matching-pair game, phrase and sentence practice, and a bundled Vietnamese–English dictionary. Built in SwiftUI, with the game logic pulled into a view model so it could carry real XCTest coverage.

  • Swift
  • SwiftUI
  • Speech Framework
  • XCTest
  • iOS

How it's tested 6 checks

  • the alphabet is recorded in three regional dialects

    North, Central (Huế) and South, each voiced by a different native speaker, with a dialect selector wired through the app so a learner can choose the accent they actually need.

  • pronunciation is graded by Apple's speech recognition

    Speaking practice captures the learner saying a word and checks it against on-device speech recognition — feedback on production, not just recognition.

  • a matching-pair game drills vocabulary

    Game logic lives in its own view model, which is what makes it unit-testable rather than tangled into the view.

  • practice covers words, phrases and full sentences
  • a Vietnamese–English dictionary ships with the app

    Bundled offline, so lookups work without a network round trip.

  • the game logic is unit-tested in XCTest

    Pulling the matching-game state into its own view model is what made it testable at all, and it has real XCTest coverage — selection toggling, ordering, and match resolution — rather than the scaffolding Xcode gives you for free.