~/work/onestepone
One Step One
An English learning app for Vietnamese learners. Lessons are played as quiz games, an AI role-play room builds speaking reflexes, and wrong answers become flashcards for review. It runs on web and mobile.
- Role
- Full Stack Engineer · Freelance
- Scope
- Product · Web · Mobile · API
- Platforms
- Web · iOS · Android
- Web brand
- VietLeap English





The problem
Vietnamese learners often know grammar but freeze when they have to speak. The product needed short, game-like lessons, a safe place to practise conversation, and review that brings mistakes back at the right time, free to try before signing up.
What I built
- 01Lesson gamesQuiz-style lessons by level (Beginner to Intermediate) with audio, Vietnamese explanations and team scores for classrooms.
- 02AI speaking roomRole-play scenarios such as meeting people, ordering at a café, asking directions, hotel check-in and job interviews, with step-by-step hints and text-to-speech.
- 03Spaced reviewWrong answers turn into flashcards that come back on schedule, with streaks and points to keep learners going.
- 04Tests & roadmapsA 9-question placement test, IELTS/TOEIC practice sets, and 1-, 3- and 6-month study plans.
- 05Guest mode & plansLearners can try the app without an account and keep their progress on signup. Free and Plus plans, with payment approval in an admin panel.
Architecture
Clients→
WebNext.js · TypeScript
MobileFlutter · BLoC · TTS
API→
Next.js API routesauth · lessons · progress
Adminpayments · backup
Data
VPS storeusers · progress · flashcards
Contentsource & license controls
Hard parts
Guest to account
Progress made in guest mode moves into the new account on signup, so learners never lose a streak or flashcards.
Safe data restore
Backup restore checks the whole export first and rejects duplicates or records that point to missing users or lessons.
Stack
Next.js 16TypeScriptFlutterflutter_blocflutter_ttsSecure storageREST API