Smart Vocab is a TOEIC vocabulary trainer that helps learners study a small amount every day and review weak words first.
Instead of acting like a simple flashcard list, the app connects daily goals, quiz results, wrong-answer history, focused review, TTS pronunciation, and an optional AI tutor into one learning loop.
Vocabulary learning is easier to sustain when learners can keep a daily rhythm and immediately revisit unstable words. This project is designed around that loop: study today, detect weak words, and bring them back into the next review flow automatically.
- Flutter developers looking for a small full-stack learning app example
- Builders combining a mobile app, Node.js API, SQLite seed data, JWT auth, and optional AI features
- Learners or product developers interested in daily-goal and weak-word review UX
- Weak-word quiz mode based on wrong-answer count
- Separate daily goals and Day-group goals to reduce overloaded sessions
- Wrong-answer continuity after goal completion
- Optional AI tutor for explanations and example sentences
- Offline-friendly fallback guidance when no AI token is available
- Deployment-friendly structure with
.envand example config separation
- Sign up and login
- Day-based and topic-based vocabulary lists
- Random meaning-to-word and word-to-meaning quizzes
- Dashboard for today's learning count, accuracy, and Day progress
- Wrong-word search and focused review
- TTS pronunciation
- Optional AI tutor chat
- Android APK build script
- App: Flutter, Dart, Dio, shared_preferences, flutter_tts
- Server: Node.js, Fastify, SQLite (better-sqlite3), JWT
- Data: TOEIC vocabulary JSON seed
.
├── README.md
├── build_release.ps1
├── start_server.ps1
├── 토익.json
├── mobile/
└── server/
cd server
npm install
copy .env.example .env
npm run seed
npm startcd mobile
flutter pub get
flutter run --dart-define=API_BASE_URL=http://localhost:3000When running from an emulator or physical device, adjust API_BASE_URL for that environment.
- Use large enough text and controls for readability.
- Keep learning flows step-by-step instead of showing too many actions at once.
- Combine icon and text labels where meaning must be understood quickly.
- Error messages should explain both what failed and what the user can do next.
- Report bugs or setup problems in Issues.
- Share learning UX, feature, or data-structure ideas in Discussions.
- Documentation fixes, vocabulary data improvements, and focused tests are welcome as pull requests.
No explicit license is currently provided. If this project is intended for open reuse, adding MIT or Apache-2.0 is recommended.